我是 asp.net MVC 的新手,所以请多多包涵。我需要构建一个在多个视图中重复的菜单。什么会更好地服务于目的Html.Action
或Html.Partial
。
2 回答
以下是我认为使用 Html.Action 或 Html.Partial 的指南
Html.Partial
Html.Partial
在渲染静态内容时使用,或者,- 如果您要从发送到主视图的 ViewModel 传递数据
Html.Action
Html.Action
当您实际需要从服务器检索其他数据以填充部分视图时使用
基本上,如果是静态的,请使用Html.Partial()
. 如果是动态的、模型独立的数据,请使用Html.Action()
. 可能有更多的场景,但这会让你很好地了解去哪里/如何去。 Html.RenderPartial()
并且Html.RenderAction()
对于上面类似命名的函数是可互换的。
Html.Partial:在不先点击控制器操作的情况下渲染部分视图。请参阅:部分视图
Html.Action调用一个控制器 Action,它可能会返回一个视图/部分视图(或者可能不会,它可能会抛出一个 HttpNotFound 或返回 Json 或其他东西)。
您的菜单是否需要视图模型,还是静态的?
如果它是静态菜单,Html.Partial
将满足您的需求。将静态菜单内容放在局部视图中并调用Html.Partial
您希望它呈现的位置。
如果菜单是从视图模型生成的,您可以使用或 :Html.Partial
Html.Action
使用 Html.Partial 链接视图模型:
public class MenuViewModel {
// menu data goes here
}
public class GeneralViewModel : MenuViewModel {
// general view info goes here
}
public ActionResult Index() {
return View(new GeneralViewModel());
}
// View Code
@model GeneralViewModel
<div>@Html.Partial("_partialName", model)</div>
在这里,我们将完整的视图模型传递给视图,视图调用 Partial 并将其模型交给局部视图。
** 使用 Html.Action 分离模型:**
public ActionResult Index() {
return View(new GeneralViewModel());
}
public ActionResult MenuView() {
return PartialView(new MenuViewModel());
}
// View Code
@model GeneralViewModel
<div>@Html.Action("MenuView")</div>
这里视图调用控制器操作MenuView,它创建一个新的视图模型并将其传递给局部视图。