複合型のネストされたオブジェクトを持つバインド属性includeおよびexcludeプロパティ

StackOverflow https://stackoverflow.com/questions/8892550

質問

わかりました、これは奇妙です。ASP.NETMVCの複合型ネストオブジェクトでBindAttributeIncludeおよびExcludeプロパティを使用できません。

これが私がしたことです:

モデル: ジェネラコディセタグプレ

HTTP POSTアクション: ジェネラコディセタグプレ

表示: ジェネラコディセタグプレ

まったく機能しません。ここに記載されているように、BindAttributeクラスのEnquiryを定義した場合にのみ、これを機能させることができますか?

[バインドの使用方法(Include="")]複雑なネストされたオブジェクトの属性?

役に立ちましたか?

解決

はい、次のように機能させることができます: ジェネラコディセタグプレ

そしてあなたの行動: ジェネラコディセタグプレ

これはバインディングにEnquiryIdのみを含み、Latitudeをnullのままにします。

そうは言っても、Bind属性を使用することはお勧めしません。ビューモデルを使用することをお勧めします。これらのビューモデル内には、この特定のビューに意味のあるプロパティのみを含めます。

ビューモデルを再適応するだけです: ジェネラコディセタグプレ

どうぞ。バインディングについて心配する必要はもうありません。

他のヒント

私見では、これを行うためのより良い方法があります。

基本的に、ビューモデルに複数のモデルがある場合、ポストコントローラーの署名には、ビューモデルではなく、同じモデルが含まれます。

I.E。 ジェネラコディセタグプレ

コントローラーのポストアクションは次のようになります。 ジェネラコディセタグプレ

ビューがまだこのように見える間中 ジェネラコディセタグプレ

このフォームは引き続きLatitudeを(設定した方法で)ポストバックしますが、ポストアクションの照会用のバインドインクルード文字列に含まれていないため、アクションは新しい値を受け入れないことに注意してください結果の問い合わせで。追加の投稿データを防ぐために、緯度を無効にするか、フォーム要素ではないようにすることをお勧めします。

他のシナリオでは、バインドを問題なく使用できますが、何らかの理由で、複雑なモデルのドット表記が嫌いです。

補足として、bind属性をクラスに直接配置することはしません。これは、コードレプリケーションなどの他の問題を引き起こす可能性があり、別のバインディングが必要になる可能性がある特定のシナリオを考慮していないためです。

(わかりやすくするために変数名を変更しました。あなたの質問はかなり古いことも承知していますが、自分で答えを探すのはこれが最初なので、自分の解決策を試し、投稿したものにたどり着きました。 。同じ問題の解決策を探している他の人々の助けになることを願っています。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top