2013-04-15 95 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