2010-10-22 3 views
3

Я встречаю раздражающее поведение привязки для привязки DateTime к отключенному текстовому полю. Он всегда возвращает null.ASP.NET MVC 2: отключено TextBox для 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

В моем случае я использую DropDownListFor, который генерирует выберите элемент и нет никакого чтения атрибута для этого вида элемента. Наверное, мне приходится обрабатывать нулевые значения в этой ситуации. Спасибо, что указали на поведение отключенного атрибута, я представил это и подтвердил здесь. – kzfabi

Смежные вопросы