我是asp.net MVC的新手,所以请耐心听我说。我需要建立一个菜单,重复在多个视图。Html.Action
和Html.Partial
哪个更适合这个目的。
发布于 2012-08-02 04:47:48
以下是我对使用Html.Action或Html.Partial的指导原则
Html.Partial
Html.Partial
,或者,如果要将数据从ViewModel传递到主视图,则使用
Html.Action
时,请使用Html.Action
基本上,如果是静态的,就使用Html.Partial()
。如果是动态的、模型无关的数据,则使用Html.Action()
。可能会有更多的场景,但这会让你有一个好的想法去哪里/如何去。对于上面命名类似的函数,Html.RenderPartial()
和Html.RenderAction()
是可互换的。
发布于 2012-08-02 05:26:57
Html.Partial:先呈现局部视图,而不需要点击控制器操作。请参阅:Partial Views
Html.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并将其模型传递给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,这将创建一个新的视图模型并将其传递给部分。
https://stackoverflow.com/questions/11766554
复制相似问题