我建立使用MVC阿賈克斯傭工一個Ajax形式:http://msdn.microsoft.com/en-us/library/dd505013.aspx從ViewData的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"]
雖然。
我想用盡可能少的線路儘可能增加ViewData["otherObject"]
到的RouteData對象只是,不希望擁有所有的someObject
奠定了獨立,這樣我可以將屬性添加到它的性能,而無需再重溫這段代碼風景。
實質上是「合併」這些對象,因爲routeData參數是有用的。
更新:一個想法:
Ajax.BeginForm("ActionName", "ControllerName",
ViewData["SomeObject"].addThePropertiesOf(ViewData["otherObject"]),
new AjaxOptions {},
new {id = "anHtmlId"});
凡addThePropertiesOf()
返回一個新的合併對象。我不想使用昂貴的反射鏡片,否則這看起來不算高效。
聽起來有點像AutoMapper可能做的事情。 –
Automapper看起來就像一把大錘放在指甲上,用來渲染視圖。 – StuperUser
一方面,是的,另一方面也許'otherObject'是'someObject'的一個屬性,你只是想使用現有的庫來壓扁這個東西,並從'someObject'中取出你不想要的屬性。 –