我是MCV3和Razor的新手。到目前为止,我只是Looooooooove它。
我目前有一个布局页面,在局部视图中有导航。以下是我的部分视图现在的样子:
<ul id="nav-primary">
<li>@Html.ActionLink("Facts", "Index", "LearnTheFacts")
<ul>
<li>@Html.ActionLink("What are the factors?", "Factors", "LearnTheFacts")</li>
<li>@Html.ActionLink("How can this site help?", "KnowYourRisk", "LearnTheFacts")</li>
</ul>
</li>
<li>@Html.ActionLink("Event Calendar", "Index", "EventCalendar")</li>
<li>@Html.ActionLink("Another Topic", "Index", "Hello")
<ul>
<li>@Html.ActionLink("Call w/ Values", "Test", "Hello", new { runTest = true }, null)</li>
</ul>
</li>
</ul>
我想做一些更复杂的事情,包括从数据库中的数据生成导航。我可以在控制器中完全生成上面的代码而不使用局部视图吗?
理想情况下,我想要一个控制器调用。 视图的所有内容也将存储在数据库中。 我相信导航的生成输出将是这样的:
<li>@Html.ActionLink("Menu Title 1", "Factors", "LearnMoreAbout", new { ID = 0 }, null)</li>
<li>@Html.ActionLink("Menu Title 2", "Factors", "LearnMoreAbout", new { ID = 1 }, null)</li>
<li>@Html.ActionLink("Menu Title 3", "Factors", "LearnMoreAbout", new { ID = 2 }, null)</li>
<li>@Html.ActionLink("Menu Title 4", "Factors", "LearnMoreAbout", new { ID = 3 }, null)</li>
<li>@Html.ActionLink("Menu Title 5", "Factors", "LearnMoreAbout", new { ID = 4 }, null)</li>
<li>@Html.ActionLink("Event Calendar", "Index", "EventCalendar")</li>
如果我亲手做的话,这就是我看到自己写的东西。我想生成它。
有什么想法吗?我应该做些不同的事吗?感谢。
答案 0 :(得分:2)
我会使用RenderAction
来执行此操作,其中action方法将从db获取数据并将其作为模型传递给将生成html的视图
public ActionResult Navigation()
{
var model = //fetch from db;
return View(model);
}
并且在视野中你可以做类似
的事情@foreach(var item in Model)
{
<li>@Html.ActionLink("Menu Title 1", "Factors", "LearnMoreAbout", new { ID = item.ID }
}
RenderAction将生成对控制器的新调用,无论您使用视图还是仅返回其中的内容
答案 1 :(得分:0)
你可以......你可以调用Html.RenderAction并在你的控制器中返回内容(“你的HTML在这里”) 为什么从数据库中生成所有内容呢?代码可能有点丑陋吗?