问题: 将viewmodel传递给局部视图时出现错误消息。
主页:Index.cshmtl,使用class DivisionModel
@model DivisionViewModel
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
@*<h2>Division</h2>*@
<div>
<!-- Nav tabs -->
<ul class="nav nav-tabs" role="tablist" id="divTabs">
<li role="presentation" class="active"><a href="#home" aria-controls="home" role="tab" data-toggle="tab">Home</a></li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<!-- Home -->
<div role="tabpanel" class="tab-pane active" id="home">
@Html.Partial("~/Views/Company/Division/_prtDivision.cshtml", new addDivisionViewModel())
</div>
部分视图:_prtDivision.cshmtl,使用addDivisionViewModel
@model addDivisionViewModel
@{
Layout = "~/Views/Company/Division/Index.cshtml";
}
@{
ViewBag.Title = "Create";
}
<h2>add division</h2>
@using (Html.BeginForm("addDivision", "Division", FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
<div class="row">
<div class="col-sm-12">
@Html.ValidationSummary(false, string.Empty, new { @class = "text-danger" })
</div>
</div>
但是,当我将addDivionsViewModel传递给视图时。
即。在tabpanel中的索引页面上
@Html.Partial("~/Views/Company/Division/_prtDivision.cshtml", new addDivisionViewModel())
我收到以下错误消息:
表示传递的模型不正确... 如果我然后将调用方法更改为:
@Html.Partial("~/Views/Company/Division/_prtDivision.cshtml", new DivisionViewModel())
或
@Html.Partial("~/Views/Company/Division/_prtDivision.cshtml", Model)
我收到以下消息:
所以,不管我发送到局部视图的模型是什么,VS告诉我它想要相反的模型?
我一直在讨论这个话题,因为看起来相对简单的事情并没有真正变得那么简单......
我尝试过的事情:
@{ var m = Model.addDivisionViewModel}
)Model
并将.addDivisionViewModel
与模型分开。
丢失功能并丢失对原始数据的引用。即数据无法显示(树结构太深=&gt; Model.addDivisonViewModel.Division.DivisionName
)
以及在网上看到的大约一百种其他方法...... 任何帮助将不胜感激
答案 0 :(得分:1)
您的局部视图的模型为addDivisionViewModel
,但也包含
Layout = "~/Views/Company/Division/Index.cshtml";
并且Index.cshtml
视图的模型为DivisionViewModel
它不能同时存在(除非一个来自另一个)。从局部视图中删除Layout = ".."
行(部分视图不应该有布局)
答案 1 :(得分:0)
将您的partialviewLayout设为null
@model addDivisionViewModel
@{
Layout = null;
}