如何在MVC操作中将发布的XML转换为POCO?

时间:2014-07-11 20:27:09

标签: asp.net asp.net-mvc asp.net-mvc-4

我对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对我来说我的动作方法中没有样板代码?

2 个答案:

答案 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