2012-02-19 18 views
3

在我的模型,字段長度是一個具有以下數據註釋的時間跨度:ASP.NET MVC 3:DisplayFormat數據詮釋時間跨度導致出現FormatException

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

我每建議here使用。我希望生成的文本框以小時和分鐘顯示長度的當前值。

但是,在MVC 3中,這似乎不再起作用,因爲它會導致FormatException。無論長度是否具有現有值,都會發生此異常。

Visual Studio添加了「當將字符串轉換爲DateTime時,在將每個變量放入DateTime對象之前解析字符串以獲取日期。」我甚至不知道這意味着什麼。我的變量是一個TimeSpan,而不是一個字符串,所以它爲什麼試圖首先進行字符串轉換?報告異常的對話框提供了一個死鏈接。

這是我認爲的代碼:發生在Html.EditorFor()

<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> 

的異常。我不確定我在這裏錯過了什麼,有沒有人有任何建議?謝謝!

回答

3

您的格式說明需要的位置標識符:

{0:h\\:mm} 
+0

啊,謝謝!我已經否認'0:'會顯示天數。這是C#的WriteLine格式的遺留問題嗎? – 2012-02-19 05:09:06

+0

不完全。 WriteLine使用string.Format(),就像DisplayFormatAttribute一樣。事實上,.NET中的幾乎所有格式最終都會在某處或某處使用string.Format。 – 2012-02-19 05:42:02