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页面的衣食父母。最后根据不同的用途来选择吧