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));

には、特に withのコンストラクターで初期化されるHtmlHelperaがあります。これは、モデルのメタデータを調べ、モデルの数値型の場合などに適切な検証ルールを適用します。クライアント検証が有効で、モデルに数値型 ( int など) がある場合、ヘルパーはレンダリング中にこれらの入力に目立たないクライアント検証を挿入します。ClientValidationRuleFactoryHtmlHelperClientDataTypeModelValidatorProviderHeight

于 2013-04-15T10:48:42.017 に答える