具有Nullable <t>模型的Asp.Net MVC部分视图</t>

时间:2013-03-22 11:00:30

标签: c# asp.net-mvc razor asp.net-mvc-4

我正在尝试开发一个简单的局部视图:

@model Nullable<DateTime>
@if (Model == null)
{
    <span>Active</span>
}
else
{
    <span>Resigned on @Model.GetValueOrDefault().ToShortDateString()</span>                                    
}

并从另一个视图中使用它:

@Html.Partial("ViewTemplates/UserStatus",user.ResignDate)

视图效果很好,除非它是Nullable<T>

我收到错误:

  

传递到字典中的模型项是类型的   'System.Collections.Generic.List 1[Models.UserModel]', but this dictionary requires a model item of type 'System.Nullable 1的System.DateTime]'。

当然user.ResignDate是可以为空的日期时间。

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:3)

如果传递给Partial方法(user.ResignDate)的模型参数为null,则asp.net-mvc将调用者视图的模型传递给Partial视图,然后出错。

如果您遵循惯例并将UserStatus放入DisplayTemplates文件夹,我会建议您用DisplayFor method替换部分呼叫

@Html.DisplayFor(model => model.user.ResignDate, "UserStatus")

答案 1 :(得分:0)

请检查user.ResignDate的数据类型 它应该是DateTime不可为空的DateTime