C# 向局部视图传递正确数据模型的正确方法

C# 向局部视图传递正确数据模型的正确方法,c#,asp.net-mvc-4,visual-studio-2015,C#,Asp.net Mvc 4,Visual Studio 2015,问题: 将viewmodel传递到局部视图时出现错误消息 主页:Index.cshmtl,使用类划分模型 @model DivisionViewModel @{ Layout = "~/Views/Shared/_Layout.cshtml"; } @*<h2>Division</h2>*@ <div> <!-- Nav tabs --> <ul class="nav nav-tabs" role="tabli

问题: 将viewmodel传递到局部视图时出现错误消息

主页:Index.cshmtl,使用类划分模型

@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>
@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>
我收到以下错误消息:

表示传递的模型不正确。。。 如果我随后将调用方法更改为:

@Html.Partial("~/Views/Company/Division/_prtDivision.cshtml", new DivisionViewModel())

我得到以下信息:

所以,不管我发送给局部视图的是什么模型,VS告诉我它想要的是相反的模型

我已经在这个话题上挖掘了很多,对于一些看起来相对简单的事情,事实证明并不是那么简单

我所尝试的:

  • 添加addDivisionViewModel作为DivisionModel的属性,并将Model.addDivisionViewModel传递给_prtDivision.cshtml
  • 在发送之前将属性分配给创建的变量(即
    @{var m=Model.addDivisionViewModel}
  • 传递
    模型
    并从模型中分离
    .addDivisionViewModel
    。 失去功能并失去对原始数据的引用。也就是说,无法显示数据(树结构太深=>
    Model.addDivisionViewModel.Division.DivisionName
    ) 在网上还有大约一百种其他的方法

任何帮助都将不胜感激

您的局部视图有一个模型,该模型是
addDivisionViewModel
,但它还包括

Layout = "~/Views/Company/Division/Index.cshtml";
Index.cshtml
视图有一个模型,它是
DivisionViewModel


它不能同时是两者(除非一个是从另一个派生出来的)。从局部视图中删除
Layout=“…”
行(局部视图不应具有布局)

将局部视图布局设置为空

@model addDivisionViewModel

@{
    Layout = null;
}

嗨,你想把原始模型从科特罗勒的动作方法传递到局部视图吗?这些事情往往如此简单,这难道不好笑吗…:-)cheersI写道,我认为我已经涵盖了产生错误的所有可能性,但我错了:)
Layout = "~/Views/Company/Division/Index.cshtml";
@model addDivisionViewModel

@{
    Layout = null;
}