2010-10-22 64 views
3

我遇到了禁用綁定到文本框的日期時間惱人的綁定行爲。它總是返回null。ASP.NET MVC 2:禁用TextBox for DateTime返回null

我的模特兒有DateTime? StartDate屬性...我也試過只是DateTime StartDate(沒有'?')。

我已嘗試以下步驟:

嘗試#1:

<%: Html.TextBoxFor(model => model.StartDate, new { @disabled="true" })%> 

嘗試#2:

<%: Html.EditorFor(model => model.StartDate, "DateDisabled")%> 

其中DateDisabled是這樣定義的局部視圖:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DateTime?>" %> 
<%: Html.TextBox("", Model.HasValue ? Model.Value.ToShortDateString() : "", new { @class = "text-box-short-disabled", @disabled = "true" })%> 

全部我的嘗試返回一個空值。有什麼我錯過了嗎?還是解決方法?

回答

10

具有disabled屬性的輸入元素在提交表單時從不將它們的值發送到服務器。您應該使用readonly屬性改爲:

<%: Html.TextBoxFor(model => model.StartDate, new { @readonly = "readonly" }) %> 
+0

對我來說,我使用它產生一個select元素,並有對這種元素的無只讀屬性的DropDownListFor。我想我必須在這種情況下處理空值。感謝您指出禁用的屬性行爲,我想象並在此確認。 – kzfabi 2013-06-24 20:48:14