MVC 部分视图

来源:互联网 发布:redflag linux 8 编辑:程序博客网 时间:2024/05/16 09:35

      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;        }

     最后的效果就是截图那样,这样做的目的我认为是为了更好的复用。暂时的理解是这样的。随着学习的深入,可能会对其有不一样的认识,欢迎交流。


       

0 0
原创粉丝点击