0

MVC では、 @Html.TextBoxFor(...) のようなものを使用すると、検証などのためにモデルのプロパティ属性を使用してコントロールがレンダリングされます。

また、クラスのプロパティ名をレンダリングされた HTML コントロールの名前として使用します。これは私たちの命名規則と少し矛盾するので、ID をもう少し制御できるようにしたいと思います。

「htmlAttributes:」をヘルパーに追加しました。これは私が望むことを行いますが、私は疑問に思っていました:

  1. これは、情報が投稿されたときにモデルを再度インスタンス化する MVC の機能にどのように影響しますか?
  2. モデル クラスのプロパティ属性を使用してコントロール ID を指定する方法はありますか?

ありがとう、ジャック

4

1 に答える 1

2

これは、情報が投稿されたときにモデルを再度インスタンス化するMVCの機能にどのように影響しますか?

ID属性は、投稿されるものにはまったく影響しません。フォームを送信するときにID属性が使用されることはありません。唯一の要件は、この属性がDOM全体で一意であることです。モデルバインダーによって使用されるname属性です。この属性は最初の引数として使用されるラムダ式から推測されるため、htmlAttributesを使用してこの属性を変更することはできません。変更する必要はありません。そうしないと、デフォルトのモデルバインダーがビューモデルを再水和する方法を壊す可能性があります。

モデルクラスのプロパティ属性を使用してコントロールIDを指定する方法はありますか?

はい、でももう少し手間がかかるかもしれません。標準タイプのカスタムエディターテンプレートと、この追加のメタデータ情報をカスタムエディターテンプレートに渡すカスタムメタデータ対応属性を使用できます。実装の詳細に興味がある場合は、例を示しますが、最初に、なぜそれが必要なのかを理解する必要があります。

于 2012-07-19T07:31:59.803 に答える