2013-11-08 2 views
0

Я не могу решить проблему за последние два дня.Связывание nullable datetime в MVC со строковым форматом

@Html.TextBoxFor(model => model.myObject.dateAssign, String.Format("{0:MM/dd/yy}")) 

here, dateAssign является нулевым значением даты и времени. это может быть или не иметь ценности.

я постоянно получаю следующую ошибку

Index (zero based) must be greater than or equal to zero and less than the size of the argument list. 

пожалуйста, дайте мне подсказку или направление

+0

"" не является дата, ?? будет вызывать ошибку, так как DateTime является valueetype и строка является ссылочным типом –

ответ

4

String.Format() нужен второй аргумент (see documentation) - в вашем случае дату.

Посмотрите на this page для форматов даты.

Тогда можно было бы написать что-то вроде

@Html.TextBox(model => String.Format("{0:MM/dd/yy}", model.myObject.dateAssign)) 

Или, если вы хотите использовать @Html.TextBoxFor, вы можете аннотировать свойство как это:

// in your model: 
[DisplayFormat(DataFormatString = "{0:MM/dd/yy}", ApplyFormatInEditMode= true] 
DateTime? dateAssign { get; set; } 

// and in your view: 
@Html.TextBoxFor(model => model.myObject.dateAssign) 
+0

здесь date nullable –

+0

Я попытался, но это изменило ошибку: «Шаблоны могут использоваться только с доступом к полю, доступом к ресурсам, индексом одномерного массива или однопараметрическим пользовательские выражения индексатора ". –

+0

'String.Format' работает также с' null'. Тогда это просто пусто. На ваш второй вопрос: Замените '@ Html.TextBoxFor' на' @ Html.TextBox'. Это должно сработать. – germi

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