I'm asking because the partial view I will create is blank, with the purpose of creating a new child entity. I just need a quick, regardless if dirty, way to access the Parent Model from within the partial view. I need the Id of the parent.
Does a partial view automatically have access to the model of the parent?
You cannot access the parent model from a partial view unless you pass some value to this partial as parameters when rendering it. For example in your main view:
@model MyViewModel
...
@Html.Partial("_myPartial", new ViewDataDictionary(new { id = Model.Id }));
and then inside your partial you could access the Id
:
<div>@ViewBag.Id</div>
Of course this is a pretty lousy way of passing data to a partial view. The correct way is to use a strongly typed view model.
I know this is an old topic, but I figured I'd just add my solution to the same problem anyway. I think it's a bit cleaner.
Basically add a model to the partial view.
The encapsulating view:
@model whatever
...
@Html.Partial("partialview", anotherwhatever)
The partial view:
@model anotherwhatever
<div>@Model.something</div>
...
In my case I just needed to pass a string into the partial view (just using it to shorten and partition code), so this was much more elegant than the other solution.
I tried the other solution first and actually couldn't get it to work, it just acted as though the value I passed was blank.
This ended up working for me.
@model MyViewModel
...
@Html.Partial("_myPartial", new ViewDataDictionary { { "id", Model.Id } })
And inside the partial view, used this...
<div>@ViewBag.id</div>