У меня есть ситуация, в которой есть HTTP-параметр GET с именем «Date», и это делает невозможным создание TextBox с именем «Date» и установку нужного значения для него.
На мой взгляд, если я напишу:
@Html.TextBox("Date", "99/99/9999")
TextBox будет отображаться не со значением 99/99/9999
, а со значением, полученным из запроса, скажем: 02/07/2012
. То же самое происходит, если я использую EditorFor
, передавая значение из модели представления (которое я активно устанавливаю в значение, отличное от 02/07/2012
)
Я не могу переопределить данные запроса, несмотря ни на что.
Что мне делать?
EDIT
Как мудро объяснил Дарин Димитров, всякий раз, когда вы хотите изменить значение, полученное из запроса, чтобы отобразить его в представлении, вы должны удалить его из ModelState
.
Это особенно полезно при работе с DateTime в запросах GET. Привязка модели ASP.NET MVC заставляет дату быть в формате MM/dd/yyyy
в запросах GET. Но когда вы хотите отобразить его пользователю, вы можете переформатировать его в dd/MM/yyyy
, возможно, используя DisplayFormatAttribute
. Однако это невозможно, если вы сначала не удалите дату из ModelState.