In MVC do partial views inherit the models of their Parent views?

和自甴很熟 提交于 2019-12-04 03:52:43

问题


I'm passing some data to a View from my controller, which I wish to display inside a partial view inside that View (don't ask, it's complicated). I know I probably shouldn't even be passing a model to a view that's inded for another view, but I've noticed that the partial view is actually inheriting the Model from the parenmt View:

public ActionResult Index(){

 Person p = new Person
 {
    FName = "Mo",
    LName = "Sep"

 };

 return View(p);

}

Then inside my Index View I have:

<h2>Index</h2>

@Html.Partial("_IndexPartial")

and Inside _IndexPartial I have:

@Model.FName 

and this Prints "Mo".

Is this behaviour intended like that in WPF where child controls inherit the data context of their parent View? And is it considered bad practise to use this in your application?

Thanks.


回答1:


Is this behaviour intended like that in WPF where child controls inherit the data context of their parent View?

Yes.

I see you are not currently passing any model to the Would it work to just inherit the layouts, and then not need to use the partial at all?

If you want to keep using it like you are, maybe just be more explicit about it, and pass the current model to the partial.

@Html.Partial("_IndexPartial", Model)

If you look at the source for Html.Partial(view):

public static MvcHtmlString Partial(this HtmlHelper htmlHelper, string partialViewName)
{
    return Partial(htmlHelper, partialViewName, null /* model */, htmlHelper.ViewData);
}

It is passing the model via htmlHelper.ViewData, you can access the model in the same way in your view with @{ViewData.Model}, but this is NOT a good practice.




回答2:


You can pass the model into the partial view as a second parameter using the overload:

@Html.Partial("viewname", Model)

Nothing wrong with this approach IMO as its the whole point in strongly-typed views and the benefits they bring...



来源:https://stackoverflow.com/questions/13431056/in-mvc-do-partial-views-inherit-the-models-of-their-parent-views

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!