ASP.NET MVC运行时编译器抱怨模型为空时的错误模型类型
当ASP.NET MVC 4 Partial Views的模型为null时,我有一个奇怪的问题。 当模型不为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解释为一些随机类型,这里是'LoyalisticSuite.Models.SignUpStartInfo'? 一切工作正常的非空值。 有什么问题,我该如何补救? 有其他人遇到过这个问题吗?
感谢所有帮助提前!
我最终创建了一个简单的包装器结构:
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)
{
...
}
链接地址: http://www.djcxy.com/p/59763.html
上一篇: ASP.NET MVC Runtime Compiler Complains About Wrong Model Type when Model is Null