Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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
C# .net mvc视图页<;T1>;和ViewUserControl<;T2>;行为_C#_.net_Model View Controller_User Controls - Fatal编程技术网

C# .net mvc视图页<;T1>;和ViewUserControl<;T2>;行为

C# .net mvc视图页<;T1>;和ViewUserControl<;T2>;行为,c#,.net,model-view-controller,user-controls,C#,.net,Model View Controller,User Controls,我有一个带有继承部分的视图页面,看起来像 Inherits="System.Web.Mvc.ViewPage<User>" Inherits="System.Web.Mvc.ViewUserControl<Address> } 现在,如果我尝试: Html.RenderPartial("Address", Model.address); 然后我可能会有一些奇怪的行为。在我的例子中,原来Model.address是null而不是将null传递给控件,看起来框架试图传递

我有一个带有继承部分的视图页面,看起来像

Inherits="System.Web.Mvc.ViewPage<User>"
Inherits="System.Web.Mvc.ViewUserControl<Address>
}

现在,如果我尝试:

Html.RenderPartial("Address", Model.address);
然后我可能会有一些奇怪的行为。在我的例子中,原来Model.address是null而不是将null传递给控件,看起来框架试图传递Model(即type=User)并抛出了一个错误(意外类型)


不管我的地址是空的,默认父对象的行为是错误还是预期行为。如果这是预期的行为,那么有人能解释一下原因吗?我不明白。

这类问题通常会导致OP在其他地方出错,而且错误是不可重现的。我试着重现你的真实场景,你知道什么?事实上你是对的:)我创建了一个简单的父/子关系,视图的类型为Child,部分视图的类型为Child.Parent为null,我没有得到null引用,事实上我得到了类型不匹配错误。事实上,即使将null显式传递给视图:

Html.RenderPartial("MyPartial",null);
甚至是直接演员:

Html.RenderPartial("MyPartial",(Parent)null);
它仍然给出了不匹配错误


我的猜测是,当它检测到传入的对象为空时,它默认使用实际视图本身的模型。我不确定这是设计还是错误,但这是唯一有意义的事情。

我认为您应该避免向视图传递空模型。如果模型为空,则使用默认/空模型。这应该起作用:

Html.RenderPartial("Address", Model.address ?? new Address { /* OPTIONAL: default values */});

谢谢你证实我的行为。至少我现在知道这不仅仅是我自己。希望有人能给出答案+1对于您所做的努力:-)同意,但我更好奇它默认为“用户”模型的行为:-(
Html.RenderPartial("Address", Model.address ?? new Address { /* OPTIONAL: default values */});