2012-06-21 29 views
1

我試圖從C#列表中生成一個XML文檔。 xml文檔必須遵守第三方XML模式。MVC3返回XML文件使用Linq到XML

我看過XSD2CODE工具,但沒有得到任何地方。

是否有人可以幫助我如何使用LINQ to XML生成XML文件並使用MVC3返回XML文件。

+0

下面是一個例子,如何返回XML網站地圖,而不是普通視圖,如果它可以幫助你的情況,你可以檢查出來[網站地圖](HTTP:// WWW .networkozone.com /片段/ C-鋒利/ 7/ASP淨MVC-簡單站點地圖) – formatc

回答

8

LINQ to XML用於查詢XML,而不是生成。如果你想生成一個XML文件,還有其他技巧:

但無論您選擇採用哪種XML生成技術,我都會建議您編寫一個自定義操作結果,以執行此作業,而不是使用XML生成管道來污染您的控制器,這絕對不是的責任。

讓我們舉一個使用第三種方法的例子(XmlSerializer)。

假設你已經定義了你要轉換爲XML視圖模型:

public class MyViewModel 
{ 
    public string Foo { get; set; } 
    public string Bar { get; set; } 
} 

現在我們可以寫一個自定義操作的結果,將執行此轉換:

public class XmlResult : ActionResult 
{ 
    public XmlResult(object data) 
    { 
     if (data == null) 
     { 
      throw new ArgumentNullException("data"); 
     } 
     Data = data; 
    } 
    public object Data { get; private set; } 

    public override void ExecuteResult(ControllerContext context) 
    { 
     var response = context.HttpContext.Response; 
     response.ContentType = "text/xml"; 
     var serializer = new XmlSerializer(Data.GetType()); 
     serializer.Serialize(response.OutputStream, Data); 
    } 
} 

和控制器的行動將是非常標準:

public ActionResult Index() 
{ 
    var model = new MyViewModel 
    { 
     Foo = "foo", 
     Bar = "bar" 
    }; 
    return new XmlResult(model); 
} 

您可能還需要檢查使這些場景變得非常簡單的ASP.NET MVC 4 Web API。