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

标签 c# .net asp.net-mvc asp.net-mvc-3 razor

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

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

生成的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">

如何使生成的 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" >

区别在于附加的data-type="decimal"

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

最佳答案

Decimal 类型创建您自己的显示模板和编辑器模板 View ,这样您就可以控制它的显示,然后控制任何 Decimal 类型的模型属性每当您调用 Html.DisplayFor(m => m.DecimalType)Html.EditorFor(m => m.DecimalType)

时将自动使用该 View

将这些 View 添加到文件夹 Views > Shared > DisplayTemplates 和 EditorTemplates

例如,您的 EditorTemplate 将类似于:

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

@Html.TextBoxFor(x => x, new {data-type = "decimal"})

关于c# - 根据数据类型在 MVC 3 中自动生成 HTML 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10830554/

相关文章:

c# - Visual Web Developer 用新的 HTML 替换内部 HTML

c# cookie 无法将类型 'string' 转换为 'x'

c# - BCL 不可变集合 : equality is non-symmetric

c# - 在 XAML 中为用户控件设置属性

css - 用 FontAwesome 图标替换字形图标

asp.net - 身份验证 cookie 和 session 状态 cookie 是两个独立的 cookie 有什么好的理由吗?

c# - 显示重复项的组合框

c# - 当我的窗口的那部分被始终在顶部的窗口遮挡时,如何防止我的自定义工具提示代码绘制?

c# - 如何使用带有摘要式身份验证和查询字符串的 WebClient.DownloadFile

c# - FluentValidation 和服务器+客户端远程验证器