Html.Partial通常呈现的是静态内容,如果不指定的Partial方法中绑定的参数,默认为宿主页面的Model类型,因此如果Partial页面中的Model和主页面的Model类型不一致的话,一定要指定 Partial方法中绑定的参数,不然会报错。Html.Partial方法也不会触发Action方法。
Html.Action会调用Action方法,并且会返回一个View或者PartialView,或者Json等(根据具体Action中返回的值)
因此,如果使用不同的Model,可以考虑使用Html.Action来处理。下面是部分代码演示。
- @model MvcApplication1.Views.Test2.Test2_Index
- @{
- ViewBag.Title = "Index";
- }
- <h2>Test2-Index</h2>
- @Model.i<br />
- @***不触发action方法,PartialIndex.cshtml中绑定
- 了Model和Index.cshtml绑定的Model不一样,
- 因此必须指定自己的Model,否则报错。
- *@
- @Html.Partial("PartialIndex",new MvcApplication1.Views.Test2.Test2_ParitalIndex())<br />
- @*
- **触发action方法,不指定Model的时候就传入一个新的Test2_ParitalIndex对象
- *@
- @Html.Action("PartialIndex", "Test2")<br />
- @model MvcApplication1.Views.Test2.Test2_ParitalIndex
- TestPartial<br />
- @Model.i<br />
- public class Test2Controller : Controller
- {
- public ActionResult Index(Test2_Index vm)
- {
- return View("Index",vm);
- }
- public ActionResult PartialIndex(Test2_ParitalIndex vm)
- {
- return View("PartialIndex", vm);
- }
- }
对于 下列这种方法,
- public ActionResult Index(Test2_Index vm)
- {
- return View("Index",VM);
- }
如果Action方法Get请求的时候,没有设置绑定参数,则vm会得到一个默认想new
Test2_Index ()对象。如果设置了绑定参数,则按照设定值传递给Action方法。