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