我有一个带有模型的视图,在该视图中我调用部分视图。我目前实际上可以在不传递任何参数的情况下从局部视图内部访问模型,而且从我在线阅读的内容来看,这应该是不可能的。在我看到的任何地方,他们都说在调用局部视图时传递模型参数。所以我的问题是,这是否有效?部分视图是否可以直接访问父视图中的所有内容?
我在父视图中这样声明模型:
@model ClienteFornecedorDTO
并在父视图中调用这样的局部视图:
<div class="form-group">
@Html.LabelFor(model => model.Fornecedor.InscricaoMunicipal, htmlAttributes: new { @class = "control-label col-md-3" })
<div class="col-md-6">
@Html.EditorFor(model => model.Fornecedor.InscricaoMunicipal, new { htmlAttributes = vFormControlHtmlAttributes})
@Html.ValidationMessageFor(model => model.Fornecedor.InscricaoMunicipal, "", new { @class = "text-danger" })
</div>
</div>
@Html.Partial("EstadoCidadeDDL")
当我在局部视图中调用模型时,所有的值都在那里:
@{
CidadeDTO cidade = new CidadeDTO();
cidade.IdEstado = ViewBag.EstadoSelectedId != null ? ViewBag.EstadoSelectedId : 0;
bool vCanUpdate = ViewContext.CanUpdate();
object vFormControlHtmlAttributes;
if (ViewContext.Profile().IdentityUser.AppRoles.Any(x => x.SystemTotalAccess == true) || (vCanUpdate && Model.Fornecedor.Tipo != EmpresaFuncao.Cliente))
{
vFormControlHtmlAttributes = new { @class = "form-control", onchange = "CarregaCidades(this.value)" };
}
else
{
vFormControlHtmlAttributes = new { @class = "form-control", disabled = "true" };
}
}
但从我在网上看到的情况来看,当调用我的部分视图时,我应该做这样的事情:
@Html.Partial("EstadoCidadeDDL", Model)
//父视图//index.cshtml
@model WebApplication5.Models.Student
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@Html.Partial("_SampleTest", Model)
//局部视图//_SampleTest.cshtml
@model WebApplication5.Models.Student
<h1>@Model.ID</h1>