2011-06-27 30 views
0

我們當前的網站需要與合作伙伴的站點集成,其中XML(與Http Post)被用作通信協議。如何在ASP.NET MVC 2中將XML序列化爲Action方法參數

您是否知道如何將XML元素(如下所示)映射到Action方法參數?

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

謝謝。

回答

3

您可以使用自定義模型聯編程序。開始一個視圖模型,將代表該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不喜歡將諸如<>之類的字符發送到服務器。

相關問題