Asp.net mvc 接收两个模型组合的视图无法将其中一个模型传递给局部视图 请忽略此问题……这是错误编码重复控制器操作的结果。

Asp.net mvc 接收两个模型组合的视图无法将其中一个模型传递给局部视图 请忽略此问题……这是错误编码重复控制器操作的结果。,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,razor,razor-2,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,Razor,Razor 2,目前正在使用VS2012和MVC5 型号 public class MainModel { public Model1 mainData { get; set; } public Model2 partialData { get; set; } } <div> // THIS WORKS @foreach (var item in Model.mainData) @Html.Label(item.field); &

目前正在使用VS2012和MVC5

型号

public class MainModel  
{  
    public Model1 mainData { get; set; }  
    public Model2 partialData { get; set; }  
}  
<div>  
    // THIS WORKS  
    @foreach (var item in Model.mainData)
    @Html.Label(item.field);
</div>


<div>  
    // THIS FAILS
    @Html.Partial("_partialView", (Model2)Model.partialData)
</div>
控制器

public ActionResult Index()
{
    MainModel model = new MainModel();
    model.mainData = db.Retrieve_Model1_Data();
    var result = db.Retrieve_Model2_Data();

    Model2 m = new Model2();
    m.field1 = result.field1
    m.field2 = result.field2

    model.partialData = m;

    return View(model);
}

public PartialViewResult _partialView(Model2 model)  
{  
    return PartialView(model);  
}  
查看

public class MainModel  
{  
    public Model1 mainData { get; set; }  
    public Model2 partialData { get; set; }  
}  
<div>  
    // THIS WORKS  
    @foreach (var item in Model.mainData)
    @Html.Label(item.field);
</div>


<div>  
    // THIS FAILS
    @Html.Partial("_partialView", (Model2)Model.partialData)
</div>

//这很有效
@foreach(Model.mainData中的var项)
@标签(item.field);
//这失败了
@Html.Partial(“_partialView”,(Model2)Model.partialData)
============================
我在这里尝试了各种方法,从只传递模型到传递模型本身,但我总是得到一个例外

例外情况 使用上面的当前代码,我得到以下异常

传入字典的模型项的类型为MainModel,但此字典需要Model2类型的模型项

如果我删除(Model2)Model.partialData上的类型转换,我得到的例外是

CS1973:'System.Web.Mvc.HtmlHelper'没有名为'Partial'的适用方法,但似乎有一个同名的扩展方法。无法动态调度扩展方法。考虑在不使用扩展方法语法的情况下强制转换动态参数或调用扩展方法。p> 问题 将model.partialData从主视图传递到局部视图的正确方法是什么???

您的“model”错误

使用大写字母“M”的“模型”:

请注意,在
for循环中
使用的是正确的循环


此外,由于您可能正在使用强类型视图,因此不需要对其进行类型转换。因此,您可以删除
(Model2)

如果我不进行类型转换,则会出现以下异常:CS1973:'System.Web.Mvc.HtmlHelper'没有名为'Partial'的适用方法,但似乎有一个名为'Partial'的扩展方法。无法动态调度扩展方法。考虑在不使用扩展方法语法的情况下强制转换动态参数或调用扩展方法。当前的代码有大写字母M。我的错误。我把代码添加到错误的控制器,有人决定复制,对不起!!!现在一切都正常了。@thepirat000..我的错误是,有人决定复制一个控制器动作,而我编码错了。很抱歉给您带来不便。。。