Отображение только даты в Razor View - PullRequest
2 голосов
/ 23 февраля 2012

В моей модели у меня есть свойства:

public DateTime CreatedFrom { get; set; }

В строго типизированном виде я показываю эту дату и делаю ее редактируемой (но только дата, а не время) Я использую:

@Html.EditorFor(m=>m.CreatedFrom.ToShortDateString())

Когда я хочу перейти к этому виду, возникает исключение:

Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.

Как это правильно?

Ответы [ 3 ]

1 голос
/ 23 февраля 2012

Камил, вы не можете привязать свою модель к методу свойства, вы сможете привязать ее только к:

@Html.EditorFor(m=>m.CreatedFrom)

Я бы настоятельно рекомендовал вам разобраться с проблемой datetime внутри вашего контроллера (или класса обслуживания) либо как часть начального действия HttpGet для заполнения представления, либо внутри HttpPost при отправке значений обратно (не совсем так, как хотелось бы). сценарий). В любом случае, корректирующее действие должно быть предпринято на уровне контроллера.

1 голос
/ 23 февраля 2012

Linquinze прав, EditorFor для Expression, а не Func.

Если вы пытаетесь отобразить текстовое поле, хотя для вашей даты вы можете использовать:

@Html.TextBox("CreatedFrom", @Model.CreatedFrom.ToShortDateString())

который, я верю, достигнет того же самого.

1 голос
/ 23 февраля 2012

Обратите внимание, что определение

Html.EditorFor<T1, T2>(Expression<T1, T2> x)

не

Html.EditorFor<T1, T2>(Func<T1, T2> f)

Таким образом, механизм бритвы ищет только имя поля CreatedFrom, но не может обработать вызов метода. Может быть, вам нужны дополнительные JS, чтобы помочь конвертировать туда и обратно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...