2011-03-02 97 views
1

刪除不可空值屬性的默認值在使用EditFor幫助器時,如何刪除默認添加到不可空屬性文本框的默認值?我不希望這樣的行爲當使用EditFor [asp.net mvc 3]

編輯

對不起,我沒有提供足夠的信息。

例如,如果使用Html.EditorFor屬性爲DateTime,它將自動將文本框值設置爲1/1/0001。如果使用「DateTime?」(可爲空),它不會,它只是將文本框留空。

+0

默認值是什麼?你的財產是什麼類型? – 2011-03-02 20:29:56

+0

如果您的屬性類型是日期時間,默認情況下它將文本框的值設置爲1/1/0001,當使用html.editorfor – ryudice 2011-03-02 20:32:17

回答

2

你可以使用UIHint來做到這一點。

在EditorTemplates

@model DateTime 
@{ var value = Model == default(DateTime) ? null : Model.ToShortDateString(); } 
@Html.TextBox(string.Empty, value) 

裝飾與UIHintAttribute參考我們的EditorTemplate你的財產創建一個名爲ShortDate.cshtml文件。考慮我的訂單類。

public class Order { 
    [UIHint("ShortDate")] 
    public DateTime Date { get; set; } 
} 

當您使用

@Html.EditorFor(x => x.Date) 

應該避免的DateTime

警告的默認值:我只是做了簡單的測試,所以請大家深入探討它。

希望它可以幫助你

2

我不得不按照我自己的需要做這樣的事情。我用這個:

@model DateTime? 

@Html.TextBox("", (Model.Value != default(DateTime) ? Model.Value.ToShortDateString() : string.Empty)) 

它對我的日期時間值非常好。沒有默認值的單元是空白的,並且具有其他DateTime值的單元格顯示對象的ShortDateString表示形式。