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

下一篇: Output multiple collections in single razor table