Возможно ли передать XDocument в качестве параметра действию в ASP.NET MVC?

#asp.net-mvc #linq-to-xml

#asp.net-mvc #linq-to-xml

Вопрос:

Мне интересно, возможно ли записать действие контроллера в ASP.NET MVC, который принимает в качестве параметра XDocument. Это, конечно, означало бы, что форма post отправила бы строку XML.

Есть ли что-нибудь особенное, что мне нужно было бы сделать, чтобы принять это в качестве параметра?

Ответ №1:

Вы могли бы написать пользовательский тип binder и зарегистрировать его в обработчике событий запуска приложения в global.asax:

 protected void Application_Start()
{
    ModelBinders.Binders.Add(typeof(XDocument), new YourXDocumentBinder());
}
  

Конвейер MVC автоматически вызывал бы связующее средство, когда он сталкивался с действием с аргументом XDocument .

Реализация binder будет выглядеть примерно так:

 public class YourXDocumentBinder : DefaultModelBinder
{
    public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
         // handle the posted data
    }
}