@Html.Partial和@Html.Action区别

1.首先看一下它们的对等关系

@Html.Partial 对应 @{Html.RenderPartial();}
@Html.Action 对应 @{Html.RenderAction();}

以上相互对应的语句,它们实现的功能是一样的,不同的就是写法,

2.Action加载方法的视图,执行 Controller → Model → View 的顺序,然后把产生的页面带回到原来的View中再回传。而Partial直接加载视图文件内容

3.@Html.Partial可以直接提供用户控件名作为参数,而Html.Action需要有对应的Action,在Action内部返回PartailResult(即retun PartialView())。

如:下面例子可以说明@Html.Partial的用法

        public ActionResult Index()
        {
            string[] txtArry = { "1", "2", "3" };
            ViewData["txt"] = "欢迎";
            return View(txtArry);
        }

index.cshtml页面

<body>
    <div>
        @*这里应该显示:1*@
        @Model[0]
    </div>
    <div>
        @*调用msg1.cshtml*@
        @Html.Partial("msg1")
    </div>
</body>

如果@Html.Partial("msg1")没有传具体的值,那么它就会默认把index里的Model值传过去,如果有具体的参数,那么msg1里的Model值就是为传过来的参数值

如:@Html.Partial("msg1",(object)Model[1])

msg1.cshtml页面

<body>
    <div>
        @Model[0]+@ViewData["txt"]
    </div>
</body>

 总结:用@Html.Partial(页面),那么这个页面的里的数据源是“调用页面:index.cshtml”给的,只要index页面可以接受到的viewdata那么msg1就可以接受,index页面就是msg1页面的衣食父母。最后根据不同的用途来选择吧

 

posted @ 2015-04-23 10:57  苦逼的猿人  阅读(3109)  评论(0编辑  收藏  举报