我是asp.net MVC的新手,请耐心等待。我需要构建一个跨多个视图重复的菜单。什么会更好地服务于目的Html.Action
或Html.Partial
。MVC Html.Partial或Html.Action
回答
这里是什么,我认为使用Html.Action或Html.Partial
Html.Partial
- 使用
Html.Partial
当你渲染静态内容或我的经验指导, - 如果您将要传递正在发送到主视图的ViewModel的数据
Html.Action
- 使用
Html.Action
当你真正需要从服务器获取额外的数据来填充局部视图
基本上,如果是静态的,使用Html.Partial()
。如果是动态的,与模型无关的数据,请使用Html.Action()
。可能会有更多的场景,但这会给你一个很好的想法,告诉你去哪里/如何去。对于上述类似命名的功能,Html.RenderPartial()
和Html.RenderAction()
是可互换的。
谢谢HTML.Action为我做了诡计。 – 2013-04-22 18:43:06
很好的解释为你+1。 – Pamma 2013-11-05 19:45:02
注意,如果应用程序通过控制器有多个周期,它可以使得稍微更难以推断给定操作发生的情况,因为Html.Action()返回到 - 可能不同的控制器。根据您的实现/依赖关系,这也可能很昂贵,并且[filters](http://msdn.microsoft.com/zh-cn/library/gg416513(vs.98).aspx)可能是一些替代方案案例。 – Cornelius 2014-08-21 16:44:45
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并将其模型切换到局部视图。
**分离使用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它创建一个新的视图模型,并将其传递至所述部分。
案例1:如果您对不同的模型使用不同的局部视图,请使用@Html.Partial()
方法。
案例2:使用@Html.Action()
方法如果您有一个部分视图与一个模型,但不同的数据。
- 1. ASP.NET MVC:使用Html.Partial或Html.Action?
- 2. Html.Partial和@section MVC
- 3. MVC 3 Html.RenderPartial VS Html.Partial
- 4. Asp.net MVC。在EditorTemplate或@ Html.Action重名/部分
- 5. MVC Razor Html.Partial子模型
- 6. HTML.Partial - MVC 3剃须刀
- 7. MVC 3 StackOverflowException瓦特/ @ Html.Action()
- 8. ASP.NET MVC 3:Html.Action上的堆栈溢出?
- 9. @ Html.Action for Razor
- 10. ASP.NET Html.Partial和ViewBag
- 11. Razor:@ Html.Partial()vs @RenderPage()
- 12. Autofac + MVC3 + Html.Action
- 13. ASP.NET MVC Razor - Html.Partial和RenderSection有什么区别?
- 14. 在模板MVC 3项目中调用Html.Partial(“LogOnPartial”)时出错
- 15. 如何使用@ Html.Partial()直接在页面上的MVC 3
- 16. Html.Action链接和Html.RouteLink
- 17. 如何使用Html.Action?
- 18. 如何在ASP.NET MVC中使用Html.Action()将参数传递给Action?
- 19. ASP.NET MVC的Html.Action渲染后,而不是GET
- 20. Asp.Net MVC 3 - @ Html.Action不会渲染/返回任何HTML
- 21. 如何在ASP.NET MVC中调用@ Html.Action(...)时指定名称空间
- 22. 在字典中存储Html.Action调用的结果? (ASP.NET MVC 3)
- 23. 如何通过在@ Html.Partial
- 24. 如何通过从@ html.partial
- 25. Html.Action错误的行为
- 26. 在Html.Action中指定QueryString
- 27. 缓存对Html.Action的调用
- 28. 与@ HTML.Action(...)局部视图
- 29. MVC剃刀布局。怎么做?
- 30. 在JavaScript中创建数组与Html.action
没有更多信息Html.Partial。把你的菜单内容放在局部视图中,并用'@ Html.Partial(“partialViewName”)调用它' – MisterIsaak 2012-08-01 19:59:12
谢谢Jissak。 – developer747 2012-08-01 20:02:41