Как сериализовать параметры метода XML в действие в ASP.NET MVC 2 - PullRequest
0 голосов
/ 27 июня 2011

Наш текущий веб-сайт должен интегрироваться с сайтами партнеров, на которых XML (с Http Post) используется в качестве протокола связи.

Знаете ли вы, как сопоставить элементы XML, как показано ниже, с параметрами метода Action?

<?xml version="1.0" encoding="utf-8"?>
<xBalance>
    <MemberCode>bu00001</MemberCode>
</xBalance>

Спасибо.

1 Ответ

3 голосов
/ 27 июня 2011

Вы можете использовать пользовательскую модель переплета.Начните с модели представления, которая будет представлять эту структуру XML:

[XmlRoot("xBalance")]
public class XBalance
{
    public string MemberCode { get; set; }
}

, затем запишите пользовательское связующее для этой модели представления:

public class XBalanceModelBinder : IModelBinder
{
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        using (var reader = XmlReader.Create(controllerContext.HttpContext.Request.InputStream))
        {
            var serializer = new XmlSerializer(typeof(XBalance));
            return serializer.Deserialize(reader);
        }
    }
}

, которое будет зарегистрировано в Application_Start:

ModelBinders.Binders.Add(typeof(XBalance), new XBalanceModelBinder());

Теперь действие вашего контроллера может выглядеть следующим образом:

[HttpPost]
[ValidateInput(false)]
public ActionResult Index(XBalance model)
{
    ...
}

Возможно, вам придется декорировать ваше действие атрибутом [ValidateInput(false)], так как вы будете отправлять ему XML и ASP.NET не нравится, когда такие символы, как < и > отправляются на сервер.

...