2013-04-15 72 views
1

我有我的下一个代码cshtlm页:HTML辅助TextBoxFor

@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 in my input tag?

回答

2

这就是MVC验证。你有模型上的数据注释吗?我猜测Height财产有[Required]反对它?这些属性由不引人注意的客户端验证框架使用。下面是增加了这些标签输入助手里的一行:

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

HtmlHelperClientValidationRuleFactory,这是在HtmlHelper与构造函数初始化,除其他事项外,一个ClientDataTypeModelValidatorProvider,其中审查模型的元数据例如,在模型中的数字类型的情况下应用适当的验证规则。如果您的模型中启用了客户端验证和数字类型,例如Height作为int,助手将在渲染过程中将不引人注意的客户端验证注入这些输入。

+1

如果您不想启用客户端验证,则可以将“ClientValidationEnabled”和“UnobtrusiveJavaScriptEnabled”appSetting条目设置为“false”。 –

+0

不,我没有** Height **的任何属性。 – gorgonzola

+0

你可以发布你的视图模型代码? – levelnis