繁体   English   中英

如何在MVC中具有子视图?

[英]How to have a sub view in MVC?

我对使用ASP.NET中的MVC感到很陌生。 如果我有一个带有Tournament类(在“详细信息”模式下)的页面,并且在其下面有一个PlayRoundHoles类的列表,该类由于复杂的查询而来自存储过程。

如何在锦标赛详细信息视图下显示此列表? 我不太了解PlayRoundHoles在控制器以及视图中的位置?

谢谢

创建一个包含该页面所有必需内容的ViewModel。 在这种情况下,带有锦标赛和PlayRoundHoles列表的ViewModel

public class MyViewModel
{
    public Tournament MyTournament { get; set; }
    public IList<PlayRoundHoles> MyPlayRoundHoles { get; set; }
}

然后,您的操作方法应返回此高度查看的类型。

public class TournamentController
{
    public ActionResult View(int tournamentId)
    {
        var t = //get tournament
        var p = //call sproc (may use the tournament id)

        MyViewModel model = new MyViewModel();
        model.MyTournament = t;
        model.MyPlayRoundHoles = p;

        return View(model);
    }
}

然后,您的视图可以看起来像

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MyViewModel>" %>

//tournament details using Model.MyTournament
//play round holes details using Model.MyPlayRoundHoles

为了改善这一点,您可以创建一个PartialView来分隔PlayRoundHoles的显示

<% Html.RenderPartial("MyPlayRoundHoles", Model.MyPlayRoundHoles); %>

您可以将Tournament实例传递给View。 然后在视图中渲染PlayRoundHoles。

例如,请参见此处http://stephenwalther.com/blog/archive/2009/04/13/asp.net-mvc-tip-50-ndash-create-view-models.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM