エンティティモデルをhiddenviewのものと適切なフィールドのeditorforを使ってビューに渡しました。MVC httppostコントローラにモデルをロードして、別の属性をロードするように指定します。
フォームを送信すると、すべてのメンバーがコントローラーで正常に動作します。しかし、フィールドに追加するフィールドを追加するようにエンティティモデルを拡張しました。
public string DescriptionAdd {
get { return ""; }
set { DescriptionHistory += DateTime.Now.ToString("dd MMM yyyy : hh:mm tt") + " by " + Core.Authorization.LoginUser.Current.FullName + " <span style='display:none;'>" + Core.Authorization.LoginUser.Current.EmailAddress + "</span> " + value + "<br />"; }
}
さて、これまでのところすべてがうまく見えます。
しかし、私がsaveを押した場合、DescriptionHistoryはnullです。コントローラが実際にデバッガで停止すると、DescriptionHistoryは元の値になります。
これは間違った順序でロードしていると思うようになります。メンバーがどのような順序でバインドされているかを指定することは可能ですか?
これは作成している非常に壊れやすいコードのようです。なぜこのようなことをしたいのですか?私はバインディングの順序が決定的だとは思わない、それはおそらくフォームに戻ってポストされた変数の順序に依存するか、おそらくxml/jsonで、もしあなたがajaxを使っているならば。 – Igor
アイデアは破壊/変更できないノートの履歴を持つことです。にのみ追加されます。私はコントローラに明示的に値を追加することに決めました。 後で触れる人はコントローラに新しいデータを追加することを忘れることができず、その機能は構造体に継承されるという考えがあります。 私の質問は、この種の問題を避けるために注文を指定することが可能な場合です。 –
ポストのコントローラのアクションメソッドでこれを明示的に行うのはなぜですか?モデルのメソッドまたはアクションの本文を使用していますか? – Igor