MVC部分视图,就是字面的意思,可是在我们代码中是如何体现的呢?小遍在最近的学习过程中,又有了新的收获。废话不说,进入我们的正题。
其实在代码中,调用分部视图的方式无非四种。
<span style="font-size:18px;">//第一种
Html.Partial();
//第二种
Html.RenderPartial()
//第三种
Html.Action()
//第四种
Html.RenderAction()</span>
其实,这四种方式的最终目的都是一样的,把一部分一部分的视图拼在一起,组成一个大的视图。下面是它们之间具体的区别和联系。
一区别:
1·Html.Partial()、Html.RenderPartial()
●这两个方法我们可以指定任何的.cshtml文件,不一定只是分部视图。可以是任何视图文件,最终,把这些分部视图合并为一个页面的。这两个方法没有用到controller,是直接把一个view(page)给加进来。
2·Html.Action、Html.RenderAction()
●这两个方法都是加载方法的视图,执行view——controller——model——view这样的一个顺序,然后把产生的页面带回到原来的view中。
用一副图来对比它们之间的区别:
二:共同点
通常这几种情况都是用来显示一个功能相对独立的“块“,比如说显示菜单或者导航条。两者输出的结果都被作为调用的view的一部分显示。
三:demo详解:
这个demo来自于我们手头的itoo项目。由于之前接触分布视图较少,所以,这个demo可能不难,但足以说明我们的学习过程。
就例如这个界面的其中一个按钮模块:
正常情况下,我们可以在页面上直接手写这个按钮,然后加一个样式即可。为了更好的复用性,我们都是利用分部视图来实现。
html代码:
<div id="btnAreas" style="margin-bottom :5px;margin-top :10px;" >
@* 2、加载按钮 *@
<!--参数说明:第二个参数是controller的名称,第一个参数是该controller中的方法名-->
@{Html.RenderAction("PermissionBtnsPartial", "ControlsPartial");}
</div>
controller代码:
public PartialViewResult PermissionBtnsPartial()
{
//从某处得到权限按钮的Json串,然后拼接成按钮
List<ButtonViewModel> ltbtn = getPermissonButton();
ConverToNewHtml html = new ConverToNewHtml();
ViewData["PermissionBtns"] = html.PermissionButton(ltbtn);
return PartialView();
}
public List<ButtonViewModel> getPermissonButton()
{
ButtonViewModel btn5 = new ButtonViewModel();
btn5.CNo = "1";
btn5.Description = "导出";
btn5.Icon = "icon-import";
btn5.Name = "export";
btn5.PNo = "A";
btn5.Url = "/EvaluationSituation/SituationExport?strConditions=";
List<ButtonViewModel> ltbtn = new List<ButtonViewModel>();
ltbtn.Add(btn5);
return ltbtn;
}
最后的效果就是截图那样,这样做的目的我认为是为了更好的复用。暂时的理解是这样的。随着学习的深入,可能会对其有不一样的认识,欢迎交流。