2011-06-27 8 views
0

現在のWebサイトは、のXML(Http Postを使用)が通信プロトコルとして仲介されているパートナーのサイトと統合する必要があります。ASP.NET MVC 2のXML to Actionメソッドパラメータをシリアライズする方法

下記のようなXML要素をActionメソッドのパラメータにマップする方法は知っていますか?

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

ありがとうございます。

答えて

3

カスタムモデルのバインダーを使用できます。

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には、サーバーに送信する<>などの文字は好きではありません。

関連する問題