已经困扰了一段时间了,希望能在这里得到帮助。
我制作了一个电视指南,该指南由5个不同的视图组成,分别是ChannelOne,ChannelTwo,ChannelThree,ChannelFour和一个显示所有四个频道(fullView)的视图。我有5个表格,并通过实体框架制作了5个相应的模型,这些模型具有此属性(对于其他4个模型,它们相似):
public partial class ChannelOne
{
public int Id_ChannelOne_ { get; set; }
public string Channel_ChannelOne_ { get; set; }
public string Program_ChannelOne_ { get; set; }
public string Date_ChannelOne_ { get; set; }
public Nullable<System.TimeSpan> Time_ChannelOne_ { get; set; }
}
当我单击fullView中的某个程序时,我想转到与该程序相对应的视图(该特定频道的视图)。
如果我有一个动作链接可以返回我的fullView控件,
@Html.ActionLink("Go to channel", "Index", new { channel = item.Channel })
我该如何根据频道属性决定要观看的视频? 我想要这样的东西:
private TvProgramDBEntities db = new TvProgramDBEntities();
[HttpPost]
public ActionResult Index(string channel)
{
if (channel == "ChannelOne")
return View(db.ChannelOne);
if (channel == "ChannelTwo")
return View(db.ChannelTwo);
}
.
.
.
答案 0 :(得分:0)
在主视图中使用Html.DisplayFor和Html.EditorFor模板助手时,Mvc将查找一个视图。
例如
/Views/Channel
/DisplayTemplates
ChannelOne.cshtml
Index.cshtml
使用类似的模型
public class ChannelViewer
{
public object Channel {get;set;}
}
所以您可以在index.cshtml中找到
@model ChannelModel
@Html.DisplayFor(m => m.Channel)
这将从displaytemplates文件夹中查找正确的视图。这将搜索当前的控制器文件夹,然后搜索共享的显示模板文件夹。
您可以使用EditorTemplates进行相同的操作。然后,您可以根据不同的渠道定制每个视图。