Asp.net mvc 局部视图模型不';无法解决
我有一个模型a,它的属性是另一个模型类型B。我有一个绑定到a的视图。我想向a添加一个局部视图,该视图采用类型B的模型。这是我的代码Asp.net mvc 局部视图模型不';无法解决,asp.net-mvc,views,partial,Asp.net Mvc,Views,Partial,我有一个模型a,它的属性是另一个模型类型B。我有一个绑定到a的视图。我想向a添加一个局部视图,该视图采用类型B的模型。这是我的代码 public class ModelA { public bool Prop1 {get;set;} public bool Prop2 {get; set;} public Dictionary<int, string> Prop3{get; set;} public int Prop4 {get; set;}
public class ModelA
{
public bool Prop1 {get;set;}
public bool Prop2 {get; set;}
public Dictionary<int, string> Prop3{get; set;}
public int Prop4 {get; set;}
public ModelB Prop5 { get; set; }
public ModelA ()
{
Prop5 = null;
... more code ...
}
}
//This view is tied to ModelA
@using (Html.BeginForm("CreateReport", "Home", FormMethod.Post))
{
some markup
}
//this is the problem
@Html.Partial("FileLinks", Model.Prop5) //This line throws an error
公共类ModelA
{
公共bool Prop1{get;set;}
公共bool Prop2{get;set;}
公共字典Prop3{get;set;}
公共int Prop4{get;set;}
公共模型B Prop5{get;set;}
公共模型a()
{
Prop5=null;
…更多代码。。。
}
}
//此视图与ModelA绑定
@使用(Html.BeginForm(“CreateReport”、“Home”、FormMethod.Post))
{
一些标记
}
//这就是问题所在
@Html.Partial(“FileLinks”,Model.Prop5)//此行抛出一个错误
错误:传入字典的模型项的类型为“ModelA”,但此字典需要“ModelB”类型的模型项
如果我将该行更改为@Html.Partial(“FileLinks”,new ModelB())
为什么原始代码不能工作?属性的类型为ModelB
感谢您的帮助,谢谢
更新:我忘了从控制器添加一些代码
m、 FileLinks=newmodelb()
返回视图(“索引”,m)
所以模型不是空的我刚刚尝试了这个,如果Prop5是空的,我会得到同样的错误。如果我将Prop5初始化为一个新的ModelB,那么它就会工作 错误不是很清楚(您可能认为这会引发NullReferenceException) 我也试过:
@Html.Parial("FileLinks",null)
同样的错误也会发生。这似乎是同一个问题,我认为这里发生的是 当您呈现这样的局部视图时,
ViewDataDictionary
和视图上下文将传递给局部视图因此,当
ModelB
为空时,ViewDataDictionary
不会更改,并且在运行时,MVC引擎无法从null
值确定模型的类型。请发布文件链接视图?这很有意义。我忘了添加其他内容,在上面的控制器操作中,我初始化初始化FileLinks,如so FileLinks=new ModelB(),然后返回带有该模型的视图。当返回视图时,Sp prop5不再为null。代码:m.FileLines=newmodelb();返回视图(“Index”,m)我认为这就是答案。