0

簡単な質問...これはいくつかのかみそりコードの例です:

@Html.TextBoxFor(c => c.RevisedEstimate)
@Html.TextBoxFor(c => c.RevisedEstimate)

これがどのようにレンダリングされるかを次に示します。

<input data-val="true" data-val-number="The field Revised Estimate must be a number." id="RevisedEstimate" name="RevisedEstimate" type="text" value="0" />
<input id="RevisedEstimate" name="RevisedEstimate" type="text" value="0" />

あなたが尋ねる明らかな質問は、「なぜあなたはそれをしているのですか?」です。かみそりのビューは、実際にはKendoUIグリッドで使用されるクライアント側の詳細行テンプレートを構築しています。2つの類似したグリッドがあり、同じビューモデルサーバー側を使用します。実際にはテンプレートのid要素を提供しているため、各行の各フィールドは一意のIDになります。

2番目の入力要素にdata-val要素とdata-val-number要素がないのはなぜですか?

4

2 に答える 2

2

JSがバックグラウンドで何をしているのかを頭から離れて知っているので、これは競合を防ぐために行われているようです。JSは、他の関数とともに検証を行うためにdata-attributesを持つ要素を探すため、複数のインスタンスがある場合、間違った要素を選択する可能性があります。

于 2012-10-19T19:41:17.100 に答える
1

クライアント側のテンプレートで使用するHTMLを生成していたので、ヘルパーによって生成されたHTMLを保持する変数を作成し、そのコードをビューでレンダリングするだけでした。

何かのようなもの:

@{
   var revisedEstimateInput = Html.TextBoxFor(c => c.RevisedEstimate)
}

その後、ビューで:

@(revisedEstimateInput) 

...必要なだけ多くの場所で。このようにして、検証およびその他のメタデータ属性がクライアントテンプレートに配置され、すべてのkenodUI検証が正しく機能しました。

于 2012-10-26T21:23:18.167 に答える