当ASP.NET MVC 4 Partial Views的模型为null时,我遇到了一个奇怪的问题。当model不为null时,一切正常。运行时编译器警告是
传递到字典中的模型项的类型为' LoyalisticSuite.Models.SignUpStartInfo',但此字典需要类型为' LoyalisticSuite.Code.CustomerInfo'的模型项。
在我的布局页面上,我将其称为:
@Html.Partial("_TelephoneNotification", Session["Customer"])
其中Session [" Customer"]确实是CustomerInfo的类型。视图声明如下:
@using MVC.Common.Extensions
@model LoyalisticSuite.Code.CustomerInfo
@if (Model != null && string.IsNullOrWhiteSpace(Model.Telephone) && Model.Owner != null && Model.Owner.Value == (Guid)Membership.GetUser().ProviderUserKey)
{
<div id="customerInfoNotification" class="privacy-policy-notification" style="display: none;">
... cut off some markup ...
</div>
}
为什么运行时编译器将null解释为某种随机类型,这里是&#39; LoyalisticSuite.Models.SignUpStartInfo&#39;?一切都适用于非null值。有什么问题,我该如何解决?还有其他人遇到过这个问题吗?
提前感谢您的帮助!
答案 0 :(得分:0)
我最终创建了一个以下简单的包装结构:
public struct Single<T>
{
public Single(object value) : this()
{
Value = (T) value;
}
public T Value { get; set; }
}
现在,我可以传递该值而无需处理空值,如下所示:
@Html.Partial("_TelephoneNotification", new Single<CustomerInfo>(Session["Customer"]))
并将部分视图模型声明为:
@model MVC.Common.Single<LoyalisticSuite.Code.CustomerInfo>
@if (Model.Value != null && string.IsNullOrWhiteSpace(Model.Value.Telephone) && Model.Value.Owner != null && Model.Value.Owner.Value == (Guid)Membership.GetUser().ProviderUserKey)
{
...
}