Asp.net MVC中Html.Partial, RenderPartial, Action,RenderAction 区别和用法【转发】
Html.partial和RenderPartial的用法與區(qū)別
Html.partial和RenderPartial都是輸出html片段,區(qū)別在于
Partial是將視圖內(nèi)容直接生成一個(gè)字符串并返回(相當(dāng)于有個(gè)轉(zhuǎn)義的過程),RenderPartial方法是直接輸出至當(dāng)前 HttpContext(因?yàn)槭侵苯虞敵?#xff0c;所以性能好)。因此它們在視圖中的使用方式是不同的:
MVC2:
<%Html.RenderPartial("PartialView");%>輸出到 HttpContext
<%=Html.Partial("PartialView")%> 輸出為string 直接到頁面
MVC3:
@Html.Partial("BasicChart")
@{
Html.RenderPartial("BasicChart");
}
Html.partial和RenderPartial的其它三個(gè)重載很有用,第二個(gè)重載@{Html.RenderPartial("BasicChart",model);}
用這個(gè)重載可以在部分視圖里使用強(qiáng)類型,然后在主視圖中使用第二個(gè)參數(shù)傳model過去,而不用controller
比如從list中傳其中一項(xiàng)myClass過去
第三個(gè)重載用來傳ViewData同理,如:@{Html.RenderPartial("BasicChart",ViewData["myData"]);}
?
?
Partial 和RenderPartial:
這兩個(gè)的性質(zhì)都是一樣, 只指把一個(gè)個(gè)View給鑲?cè)脒M(jìn)來, 只是回傳值有點(diǎn)不一樣
Partial 回傳的一個(gè)Object (MvcHtmlString), 回傳一個(gè)String 把一堆Html給回傳出來, 然后寫進(jìn)到主頁面上
@Html.Partial("ViewName")
RenderPartial 回傳的是void, 而這個(gè)方法會在主頁面上添加指定的View
@{
??????????? Html.RenderPartial("ViewName");
??? }?
這兩個(gè)方法沒有用到Controller, 是直接把一個(gè)View(Page) 給加進(jìn)來
而RenderAction 有點(diǎn)不一樣, 這是一個(gè)Action, 所以會用到Controller 之后再回傳一個(gè)頁面
public?class?ChildActionOnlyTestController?:?Controller
{
[ChildActionOnly]
public?ActionResult?GetSupplierList()
{
var?controller?=?new?SupplierController();
return?controller.SupplierList();
}
}
?
RenderPartial和RenderAction兩者的相同點(diǎn)
通常都被用來顯示一個(gè)功能相對獨(dú)立的“塊”,比如說顯示菜單或者導(dǎo)航條。 兩者輸出的結(jié)果都被作為調(diào)用的View的一部分顯示。
兩者的不同點(diǎn)
?
?
@Html.Partial/@{Htmt.RenderPartial()} @Html.Partial用于將分部視圖渲染為字符串 @{Html.RenderPartial}將分布視圖直接寫入響應(yīng)輸出流,所以只能直接放在代碼塊中,不能放在表達(dá)式中(返回值是void) RenderPartial因?yàn)槭侵苯訉懺陧憫?yīng)流中,所以性能會更好(微量影響),而Partial不用寫在代碼塊中,所以更方便 @Html.Action()/@Html.RenderAction() 和Partial與RenderPartial類似,但是因?yàn)闀ㄟ^Action,所以更靈活,可以利用控制器上下文。 在Action中可以通過IsChildAction來判斷是被Url直接調(diào)用還是被Action()/RenderAction()調(diào)用 可以利用重載直接參數(shù)給Action。 RenderAction優(yōu)先使用ActionNameAttribute。 Action中使用return PartialView()指定分部視圖,在_ViewStatrt.cshtml中指定的Layout會無效。 4種PartialView對比: PartialView: <div>Just a PartialView Test!@ViewBag.Test</div> @ViewBag.Test?
View: <p>@{Html.RenderPartial("ViewUserControl1");}@Html.Partial("ViewUserControl1")@{Html.RenderAction("ViewUserControl1");}@Html.Action("ViewUserControl1") </p>?
Controller: Controller: [ChildActionOnly]//防止直接調(diào)用 public ActionResult ViewUserControl1() {ViewBag.Test = "(Action)調(diào)用";return PartialView(); }?
效果:?????
?
總結(jié)
以上是生活随笔為你收集整理的Asp.net MVC中Html.Partial, RenderPartial, Action,RenderAction 区别和用法【转发】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle中避免sort操作
- 下一篇: 最近项目用到Dubbo框架,临时抱佛脚分