EditorTemplate для «Floats» не вызывается в ASP.NET MVC 3 - PullRequest
1 голос
/ 30 марта 2012

У меня есть свойство типа "float" в моей ViewModel. Он отображается в виде текстового поля со значением по умолчанию "0".

Я добавил папку «EditorTemplates» в папку «Shared» и создал новый файл «Float.cshtml» со ​​следующим содержимым:

@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue == 0 ? "" : ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line" })

Однако при запуске приложения поля с плавающей точкой по-прежнему отображаются со значением по умолчанию, равным 0.

Спасибо

UPDATE Я просто пытаюсь понять, как ASP.NET реагирует на пользовательские шаблоны, до сих пор движок не обрабатывал мой пользовательский шаблон, что-то похожее на:

LatLng.cshtml

@model float
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line "}) Latitude

В ViewModel,

    [UIHint("LatLng")]
    public float? Latitude { get; set; }

На виду,

@Html.EditorFor(model => model.Latitude)

Ничего не меняется, используется шаблон по умолчанию.

Ответы [ 2 ]

5 голосов
/ 30 марта 2012

Float на самом деле не является типом .NET, это тип C #. Float сопоставляется с System.Single, поэтому вам нужно создать файл Single.cshtml, а не Float.cshtml.

Вы также можете обойти это, указав атрибут UIHint в данных модели или указав шаблон для использования в методах Editor или EditorFor.

0 голосов
/ 30 марта 2012

Простой обходной путь - если вы просто установите ViewData.TemplateInfo.FormattedModelValue для возврата строки в модели, так что вам не нужно делать эту странную логику в представлении. Если вам нужно отправить обратно новое значение (для целей редактирования), вам просто нужно добавить некоторую логику в контроллер, чтобы превратить строку обратно в число с плавающей точкой.

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