Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 局部视图模型不';无法解决_Asp.net Mvc_Views_Partial - Fatal编程技术网

Asp.net mvc 局部视图模型不';无法解决

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;}

我有一个模型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 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)我认为这就是答案。