【问题标题】:Generate Partial View for Navigation in an MVC Controller在 MVC 控制器中为导航生成局部视图
【发布时间】:2011-07-17 01:02:08
【问题描述】:

我是 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>

这就是我认为自己写的,如果我是手写的话。我想生成它。

有什么想法吗?我应该做一些不同的事情吗?谢谢。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 razor


    【解决方案1】:

    我会使用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 将生成对控制器的新调用,无论您使用视图还是仅从其中返回内容

    【讨论】:

      【解决方案2】:

      您可以...您可以调用 Html.RenderAction 并在您的控制器中返回 Content("your HTML here") 为什么要从数据库中生成所有内容?那样代码可能有点难看?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-11
        • 1970-01-01
        • 2010-11-25
        • 2013-10-29
        • 2010-11-25
        • 1970-01-01
        • 1970-01-01
        • 2013-09-06
        相关资源
        最近更新 更多