でのViewDataからオブジェクトを拡張し、私はMVCのAjaxヘルパーを使用してAjaxフォームを構築しています:http://msdn.microsoft.com/en-us/library/dd505013.aspxはMVC HtmlHelpers
コードは次のようになります。
Ajax.BeginForm("ActionName", "ControllerName",
new {
SomeProperty = (ViewData["SomeObject"] as SomeClass).SomeProperty,
AnotherProperty = (ViewData["SomeObject"] as SomeClass).AnotherProperty,
AllTheProperties = (ViewData["SomeObject"] as SomeClass).AllTheProperties,
otherProperty= ViewData["otherObject"]
},
new AjaxOptions {},
new {id = "anHtmlId"});
が、より多くの特性の多くはViewData["SomeObject"]
でありますしかし、。
routeDataオブジェクトにできるだけ少ない行で単にViewData["otherObject"]
を追加したいのですが、someObject
というプロパティのすべてを個別にレイアウトしたくないので、このコードを再訪することなくプロパティを追加することができます景色。
これらのオブジェクトをrouteDataパラメータとして渡すことを本質的に「マージ」すると便利です。
更新:アイデア:addThePropertiesOf()
がマージされた新しいオブジェクトを返します
Ajax.BeginForm("ActionName", "ControllerName",
ViewData["SomeObject"].addThePropertiesOf(ViewData["otherObject"]),
new AjaxOptions {},
new {id = "anHtmlId"});
。私は反射の高価なビットを使用したくない場合は、これはperformantと思われません。
AutoMapperがぼやけているかもしれません。 –
Automapperは、ビューをレンダリングするために何かのために釘の上で大槌のように思えます。 – StuperUser
一方、 'otherObject'は' someObject'のプロパティであり、 'someObject'から望ましくないプロパティを取り除くために既存のライブラリを使いたいだけです。 –