我对MVC控制器上的操作有以下方法签名:
public ActionResult DoSomething(int id, string anotherParameter, IEnumerable<StronglyTypedThing> data)
{
}
这个方法是由一个AJAX请求调用的(在这个例子中我使用的是ExtJS,但这应该对我想象的很少/没有影响!),例如:
id: 1,
anotherParameter: 'cake',
data: '<stronglyTypedThings>
<stronglyTypedThing>
<id>1</id>
<anotherProperty>Smith, John></anotherProperty>
</stronglyTypedThing>
<stronglyTypedThing>
<id>2</id>
<anotherProperty>Doe, Jane></anotherProperty>
</stronglyTypedThing>
</stronglyTypedThings>'
目前我上面显示的方法签名是不我所拥有的,而最终参数定义为string data
,我有什么是有效的样板代码转换XML字符串进入IEnumerable<StronglyTypedThing>
。
有没有办法(通过MVC中的某些内容,或者通过扩展它)MVC处理grunt-work对我来说我的动作方法中没有样板代码?
答案 0 :(得分:1)
您可以创建自定义模型装订器。 此链接将包含自定义xml活页夹的示例:http://lostechies.com/jimmybogard/2011/06/24/model-binding-xml-in-asp-net-mvc-3/
答案 1 :(得分:0)
您可能希望查看自定义ValueProviderFactory
。
自定义XmlValueProviderFactory
将解析传入的xml字符串并构造一个中间字典。 (MVC用于建模绑定)
根据您的需要,您可以解析整个XML /或其中的一部分,以构建与Model对象等效的字典。在那里,MVC将负责使用模型绑定为您创建模型。此外,价值提供商还具有输入验证的额外好处,自定义模型绑定器不具备此功能。
请参阅以下帮助链接以查看JSON&amp; XML Value Provider工厂。 我认为JSON Value提供程序现在已经构建,但不是XML。不确定。
http://haacked.com/archive/2010/04/15/sending-json-to-an-asp-net-mvc-action-method-argument.aspx/ http://www.nogginbox.co.uk/Media/files/XmlValueProviderFactory.txt