我是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和Html.Action方法有什麼區別?
- 3. Html.Partial和@section MVC
- 4. MVC 3 Html.RenderPartial VS Html.Partial
- 5. Asp.net MVC。在EditorTemplate或@ Html.Action重名/部分
- 6. MVC @ Html.Partial - 兩個模型
- 7. HTML.Partial - MVC 3剃鬚刀
- 8. MVC Razor Html.Partial子模型
- 9. MVC 3 StackOverflowException瓦特/ @ Html.Action()
- 10. StructureMap MVC 5 html.Action問題
- 11. Html.Action - InsufficientExecutionStackException
- 12. 如果Html.RenderAction或Html.Action失敗
- 13. 與MVC3中的html.partial調用中的html.action調用相關的成本是多少?
- 14. Html.Partial()不與_grid.cshtml
- 15. ASP.NET MVC 3:Html.Action上的堆棧溢出?
- 16. ASP.NET MVC - Html.Action發送空列表
- 17. 鑄造一把umbraco @CurrentPage在MVC @ Html.Action
- 18. @ Html.Action MVC 4查詢字符串參數
- 19. @ Html.Action for Razor
- 20. ASP.NET Html.Partial和ViewBag
- 21. Razor:@ Html.Partial()vs @RenderPage()
- 22. 使用@ Html.Partial呈現usercontrol(cshtml)
- 23. Html.Partial下if語句
- 24. Autofac + MVC3 + Html.Action
- 25. 刷新Html.Action
- 26. 如何從佈局Html.Partial
- 27. Html.Action從局部視圖
- 28. 在模板MVC 3項目中調用Html.Partial(「LogOnPartial」)時出錯
- 29. 如何使用@ Html.Partial()直接在頁面上的MVC 3
- 30. ASP.NET MVC Razor - Html.Partial和RenderSection有什麼區別?
沒有更多信息Html.Partial。把你的菜單內容放在局部視圖中,並用'@ Html.Partial(「partialViewName」)調用它' – MisterIsaak 2012-08-01 19:59:12
謝謝Jissak。 – developer747 2012-08-01 20:02:41