【问题标题】:MVC4 razor Html.LabelFor for a Nullable<System.DateTime>MVC4 razor Html.LabelFor 用于 Nullable<System.DateTime>
【发布时间】:2014-08-20 22:53:21
【问题描述】:

我的模型中有这个属性:

[DisplayName("Birth Date")]
public Nullable<System.DateTime> dtnasc { get; set; }

在查看 htmlhelper 时使用

 @Html.LabelFor(_ => _.dtnasc)

并收到此错误:可空对象必须有一个值。

当属性 dtnasc 的值为 null 时,我们如何获取 DisplayName 元数据

【问题讨论】:

  • @Html.Raw(Helpers.GetDisplayName&lt;Models.ModelName&gt;(_ =&gt; _.dtnasc)); 是做什么的?
  • Obv 将 ModelName 替换为您的模型。
  • 您一定有其他问题,因为您显示的代码工作正常(显示 出生日期)并且@Html.LabelFor() 不会产生该错误

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


【解决方案1】:

视图中您的案例中似乎缺少模型名称。

确保您在视图中添加了以下行。

@model SolutionName.modelName

【讨论】:

    【解决方案2】:

    “你一定有其他问题”

    问题出在下一行,但错误总是指向@Html.LabelFor 行

    显然我不能在空属性中使用 ToString(...)

    @Html.LabelFor(_ => _.dtnasc)
    <input type="text" id="dtnasc" name="dtnasc" value="@Model.dtnasc.Value.ToString("yyyy/MM/dd")" />
    

    为了解决这个问题,我做了

    在模型上添加 DisplayFormat 以格式化日期:

    [DisplayName("Birth Date")]
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
    public Nullable<System.DateTime> dtnasc { get; set; }
    

    在视图中我更改了 Helper.EditorFor 输入的标签:

    @Html.LabelFor(_ => _.dtnasc)
    @Html.EditorFor(_ => _.dtnasc)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      相关资源
      最近更新 更多