ASP.NET MVC 3:TimeSpan的DisplayFormat数据注释导致FormatException

时间:2012-02-19 04:35:57

标签: asp.net-mvc-3 html-helper data-annotations

在我的模型中,字段Length是TimeSpan,带有以下数据注释:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{h\\:mm}")]

我根据建议使用here。我希望生成的文本框以小时和分钟显示长度的当前值。

然而,在MVC 3中,这似乎不再起作用,因为它会导致FormatException。无论Length是否具有现有值,都会发生此异常。

Visual Studio添加,“将字符串转换为DateTime时,解析字符串以在将每个变量放入DateTime对象之前获取日期。”我甚至都不知道这意味着什么。我的变量是TimeSpan,而不是字符串,那么为什么它首先尝试进行字符串转换?报告异常的对话框提供了死链接。

这是我视图中的代码:

    <div class="editor-label">
        @Html.LabelFor(model => model.Length)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Length)
        @Html.ValidationMessageFor(model => model.Length)
    </div>

例外情况发生在Html.EditorFor()。我不确定我在这里缺少什么,有没有人有任何建议?谢谢!

1 个答案:

答案 0 :(得分:3)

您的格式说明符需要位置标识符:

{0:h\\:mm}