1

我的 cshtlm 页面包含以下代码:

@using (Html.BeginForm("Optional", "ConfigurationSilo2", FormMethod.Post, new { id = "storeDataForm" }))
{          
     @Html.TextBoxFor(x => x.Height)  

    <div align="right">
        <input type="submit" id="Avanti" value="@ViewRes.ConfigurationString.buttonNext" name="@ViewRes.ConfigurationString.buttonNext" />
    </div>
}

我的 html 生成的代码是:

<form action="/ConfigurationSilo2/Optional" id="storeDataForm" method="post">

     <input data-val="true" data-val-number="The field Height must be a number." data-val-required="The Height field is required." id="Height" name="Height" type="text" value="0" />          
    <div align="right">
        <input type="submit" id="Avanti" value="Next" name="Next" />
    </div>
</form>

这是我的模型代码类:

public class Spondina
{
    public int Height { get; set; }
    public int Quantity { get; set; }
    public float UnitPrice { get; set; }
    public float TotalCost { get; set; }
}

为什么我的输入标签中有标签data-val data-val-number data-val-required ?

4

1 回答 1

2

这就是 MVC 验证的开始。你的模型上有数据注释吗?我猜Height物业有[Required]反对吗?这些属性由不显眼的客户端验证框架使用。这是输入助手中添加这些标签的行:

tagBuilder.MergeAttributes(htmlHelper.GetUnobtrusiveValidationAttributes(name, metadata));

HtmlHelpera ClientValidationRuleFactory,它在 with 的构造函数中初始化HtmlHelper,其中包括 a ClientDataTypeModelValidatorProvider,它检查模型的元数据并在模型中的数字类型的情况下应用适当的验证规则,例如。如果您在模型中启用了客户端验证和数字类型,例如Heightint,则助手将在渲染期间将不显眼的客户端验证注入到这些输入中。

于 2013-04-15T10:48:42.017 回答