MVC2アプリケーションからXML出力を作成してクライアントに返すにはどうすればいいですか(おそらくXSDスキーム検証も使用しています)?ASP.netでXMLデータを返すためのベストプラクティスMVC2
私はコントローラから直接返すことはできませんし、変数などとして表示することはできません。私のアプリケーションの巨大な部分は、さまざまなXMLソース、スキーマ、フォーマット間の変換を行っています。始まり。
しかし、それを行うには良い方法がありますか?
ありがとうございます!
MVC2アプリケーションからXML出力を作成してクライアントに返すにはどうすればいいですか(おそらくXSDスキーム検証も使用しています)?ASP.netでXMLデータを返すためのベストプラクティスMVC2
私はコントローラから直接返すことはできませんし、変数などとして表示することはできません。私のアプリケーションの巨大な部分は、さまざまなXMLソース、スキーマ、フォーマット間の変換を行っています。始まり。
しかし、それを行うには良い方法がありますか?
ありがとうございます!
ビューモデルをXMLにシリアル化するカスタムActionResultを書くことができます。行の中で何か:その後、
public class XmlResult : ActionResult
{
private readonly object _model;
public XmlResult(object model)
{
_model = model;
}
public override void ExecuteResult(ControllerContext context)
{
if (_model != null)
{
var response = context.HttpContext.Response;
var serializer = new XmlSerializer(_model.GetType());
response.ContentType = "text/xml";
serializer.Serialize(response.OutputStream, _model);
}
}
}
と:
public ActionResult Foo()
{
SomeViewModel model = ...
return new XmlResult(model);
}
あなたはExecuteResult
メソッド内で必要になる場合がありますことを...など、任意のXSD検証を行うこと自由に感じています。あなたが必要として自分自身を見つける場合、これは言われている
public ActionResult Foo()
{
SomeViewModel model = ...
return this.Xml(model);
}
:その後、
public static class ControllerExtensions
{
public static ActionResult Xml(this ControllerBase controller, object model)
{
return new XmlResult(model);
}
}
と:コメント欄に@Robert Koritnikによって示唆されるように
あなたはまた、拡張メソッドを書くことができWCFを使用すると思われる多くのXMLを交換します。 POXが必要な場合は、WCF RESTを検討してください。
コントローラー拡張メソッド 'Xml()'を追加することで、既存の*結果*。そうすれば、他のアクション結果と同様に、 'return Xml(model);'と書くだけです。 –
ここに+1して自分の答えを削除すると、あなたが追加している間にポップアップされました。 @ Robertのコメントに 'XmlSerializer' *または*' DataContractSerializer'のサポートが考えられるかもしれません。 –
@Robert Koritnik、素敵な提案、私はそれを考慮に入れて私の答えを更新しました。 –
'XMLレンダリングされた出力'という意味を具体的に説明できますか? (色の書式設定、字下げなどでXMLを表示したいですか?) –
おっと、ごめんなさい、ちょっと混乱しています。 –