根据数据类型在MVC 3中自动生成HTML属性

Dra*_*lut 3 .net c# asp.net-mvc razor asp.net-mvc-3

我在MVC模型中有以下属性:

[Range(0, double.MaxValue, ErrorMessage = "The Volume must have positive values!")]       
public decimal? Volume { get; set; }
Run Code Online (Sandbox Code Playgroud)

生成的HTML是

<input type="text" value="1,00" name="Product.Volume" id="Product_Volume" data-val-range-min="0" data-val-range-max="1.79769313486232E+308" data-val-range="The Volume must have positive values!" data-val-number="The field Volume must be a number." data-val="true" class="text-box single-line">
Run Code Online (Sandbox Code Playgroud)

如何使生成的HTML成为这样的:

<input type="text" value="1,00" name="Product.Volume" id="Product_Volume" data-val-range-min="0" data-val-range-max="1.79769313486232E+308" data-val-range="The Volume must have positive values!" data-val-number="The field Volume must be a number." data-val="true" class="text-box single-line" data-type="decimal" >
Run Code Online (Sandbox Code Playgroud)

不同的是额外的 data-type="decimal"

我希望自动添加HTML属性,因此我不必手动添加它.

mat*_*mmo 10

Decimal类型创建自己的显示模板和编辑器模板视图,这样您就可以控制它的显示,然后任何类型的Model属性Decimal将在您调用时自动使用该视图Html.DisplayFor(m => m.DecimalType)Html.EditorFor(m => m.DecimalType)

视图>共享> DisplayTemplates和EditorTemplates文件夹中添加这些视图

例如,您的EditorTemplate将类似于:

@model decimal
@{
    Layout = "~/Views/Shared/EditorTemplates/Template.cshtml";
}

@Html.TextBoxFor(x => x, new {data-type = "decimal"})
Run Code Online (Sandbox Code Playgroud)