我对ASP.NET中的这个MVC很新。如果我有一个具有锦标赛类的页面(在详细模式下),下面有一个PlayRoundHoles类列表,由于复杂的查询,它来自存储过程。
如何在比赛详情视图下显示此列表?我不太明白这个PlayRoundHoles在Controller中的位置以及View?
由于
答案 0 :(得分:1)
创建一个ViewModel,其中包含此页面的所有必需内容。在这种情况下,ViewModel带有锦标赛和PlayRoundHoles列表
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); %>
答案 1 :(得分:0)
您可以将锦标赛的实例传递给View。然后在View中渲染PlayRoundHoles。
例如,请参阅此处http://stephenwalther.com/blog/archive/2009/04/13/asp.net-mvc-tip-50-ndash-create-view-models.aspx