カスタムモデルのバインダーを使用できます。
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());
[XmlRoot("xBalance")]
public class XBalance
{
public string MemberCode { get; set; }
}
は、このビューモデル用のカスタムモデルバインダーを書く:このXML構造を表現するビューモデルで開始
コントローラの動作は次のようになります。
[HttpPost]
[ValidateInput(false)]
public ActionResult Index(XBalance model)
{
...
}
[ValidateInput(false)]
属性を使用してアクションをデコレートする必要がある場合があります。そのため、ASP.NETには、サーバーに送信する<
と>
などの文字は好きではありません。