在webform中我们用过user control可以减少重复代码也利于将页面模组化,
在mvc中 叫分部视图 Partial View.
也就是一个片段的view.可以利用Partial view 把这部分的html或显示逻辑包装起来,方便重复引用,当建立出来的分部视图放置于Views/Shared目录,任何控制器下的action或者view都可以载入,共用的分部视图放在shared文件下。
如何建立?
与建立view的步骤一样,只是选择 添加--视图之后 要勾选上”创建为分部视图“(只要勾选上,所建立的检视页面将不会有任何预设内容弄,这时我们试图在这个分部视图页面加上html片段来显示)
注意:使用分布视图不一定需要建立相关的action,因为它仅仅是片段的html,且调用时,也不会调用action来执行。
如何载入?
html辅助方法拥有一个专门的扩充方法来载入分部视图,成为Partial,可以在view中直接将分部视图的执行结果取回。
Partial(HTMLHelper,String)
Partial(HTMLHelper,String,Object)
Partial(HTMLHelper,String,ViewDataDictionary)
Partial(HTMLHelper,String,Object,ViewDataDictionary)
-----
Html.Partial("ajaxPage")
Html.Partial("ajaxPage",Model)
Html.Partial("ajaxPage",null,ViewData["Model"])
Html.Partial("ajaxPage",Model,null,ViewData["Model"])
从控制器载入分部视图
分部视图除了可以直接从检视页面载入后,还可以像检视页面一样
从控制器中使用,比如Return PartialView()
这种方式与view辅助方法唯一的差别在于它不会套用于主版页面。
使用Html.Action辅助方法载入分部视图
除了在检视页面里使用Partial载入分部视图外,在mvc中还可以使
用Html.Action辅助方法载入另一个Action的执行结果。
eg:
public ActionResult aaa(){
return PartialView();
}
然后可以在检视页面利用Html.Action来载入这个Action的执行结果
@Html.Action("aaa")
差别:
@Html.Partial载入分部视图是通过HtmlHelper直接读取*.cshtml文
件,直接执行该检视并取得结果,若使用Html.Action的话,则会通
过HtmlHelper对IIS再进行一次处理要求(通过Server.Execute方法
),因此html.action会重新执行一遍Controller的生命周期。
@Html.DisplayNameFor(model => model.Email)
仅仅输出单纯的文字,完全没有额外的标签,而且输出的显示文字
是在Member数据模型中各栏位的DisplayName属性(Attributes)参
数值,如果没有定义DisplayName属性的参数值的话,预设就会输出
属性名称。
@Html.DisplayFor(model => model.Email)
是个模板辅助方法,专门用来输出显示模板,发现大部分栏位都直
接输出数据模型传入的值(没有额外的HTML标签),但有个特别的
栏位不太一样,那就是Email这个栏位输出,因为这个栏位的输出竟
然是一个含有超链接的Email地址。
自定义HTML辅助方法。