Безопасное повторное использование шаблонов редактора в различных типах

Предположим, у меня есть следующий частичный вид для Decimal, расположенного в "~/Views/Shared/EditorTemplates/Decimal.cshtml":

@model decimal?
@{
    var attrs = ViewData;

    if (ViewData["type"] == null)
    {
        attrs.Add("type", "number");
    }
}

@Html.TextBoxFor(m => m, attrs)

Я также хочу использовать этот шаблон для свойств типа Int32. Поэтому я создаю следующее в "~/Views/Shared/EditorTemplates/Int32.cshtml":

@model int?
@Html.Partial("~/Views/Shared/EditorTemplates/Decimal.cshtml", (decimal?)Model)

Есть ли лучший способ повторного использования шаблонов редактора? Есть ли какие-либо последствия этого шаблона, которые я мог пропустить?

(Редактировать: добавлено явное приведение от int к decimal?.)


person aaaantoine    schedule 16.05.2019    source источник


Ответы (1)


Вы можете определить EditorTemplate в целом. Один раз определяя для обоих типов данных. Например, вы можете использовать следующие примеры кода:

Определение EditorTemplate:

~/Views/Shared/EditorTemplates/Number.cshtml

Использование помощника в представлении:

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

определение в классе ViewModel:

[UIHint("Number")]
public int SomeValue { get; set; }

OR

[UIHint("Number")]
public decimal SomeValue { get; set; }
person meysam poormonfared azimi    schedule 16.05.2019
comment
Есть ли способ сделать это без повторения Number для каждого свойства или для каждого вызова EditorFor? - person aaaantoine; 20.05.2019
comment
да, это не обязательно, и я обновил свой ответ, попробуйте. - person meysam poormonfared azimi; 22.05.2019