Это можно сделать с помощью атрибута ActionFilterAttribute. Фильтры действий в основном пересекают запрос до или после результата действия. Поэтому я только что создал атрибут фильтра настраиваемого действия для результата действия POST. Вот что я сделал:
Почему они не могут передать xml в виде строки в сообщении формы?
Пример:
public ActionResult SendMeXml(string xml)
{
//Parse into a XDocument or something else if you want, and return whatever you want.
XDocument xmlDocument = XDocument.Parse(xml);
return View();
}
Вы можете создать сообщение формы и отправить его в одном поле формы.
Отлично!,
Какой объект у меня в методе контроллера для управления Xml?
Я использую этот способ:
В actionFilter я заполняю модель :
.
.
string xmlBody = sb.ToString();
filterContext.Controller.ViewData.Model = xmlBody;
А в моем методе контроллера я получаю модель как:
string xmlUserResult = ViewData.Model as string;
XmlSerializer ser = new XmlSerializer(typeof(UserDTO));
StringReader stringReader = new StringReader(xmlUserResult);
XmlTextReader xmlReader = new XmlTextReader(stringReader);
UserDTO userToUpdate = ser.Deserialize(xmlReader) as UserDTO;
xmlReader.Close();
stringReader.Close();
Это правильная реализация?
Спасибо.
Я знаю, что вы можете создать фабрику нестандартных поставщиков значений. Это позволит вам также проверять свои модели, когда они публикуются, прежде чем пытаться их сохранить. Фил Хаак опубликовал в блоге сообщение о JSON-версии той же концепции. Единственная проблема в том, что я не знаю, как реализовать нечто подобное для XML.