2009-06-25 9 views
2

迅速な答えを必要とするだけの質問、私がアクションを持っては、単一のアクション

のための複数の出力を有する、と言う仮定のブログエンジンですべての投稿を一覧表示します

BlogPostController.List(); 

をすることができます。

私は、このデータのHTML出力し、このデータのXML出力の両方をしたいです。

好ましく私は例えば、URLによって純粋にこれらに対処できるようにしたいと思います:

http://MyHypotheticalBlogEngine.com/BlogPosts/List 

http://MyHypotheticalBlogEngine.com/BlogPosts/List.xml 

そして、私は私のアクションメソッドでビューを()を呼び出したときに、それが.aspxのビューのいずれかを選ぶと思いますがまたは.xmlビューに依存します。

を内蔵、この何かが(私はそれがあるとして、それについての情報を見つけるように見えることはできませんが、私は本当にどちらか、それを検索するための良いキーワードを考えることができない)ですか、それは「別の方法やロールを見つけることですあなた自身の方法 "jobby?

乾杯

答えて

3

デフォルトのビューの空白にすることができ、入力パラメータを指定する必要がありますが、あなたがサポートしたいかもしれない他の様々な形を達成するために指定する必要があります。 RSSリーダーの場合は、RSS、ATOM、XMLなどをサポートするかもしれません。デフォルトを選択し、あなたのURLに他のフォーマットタイプを追加してください。

domain.com/blogs/list/ 
domain.com/blogs/list/xml 
domain.com/blogs/list/atom 

など

+0

ああ、ta :)簡単な解決策。エクステンション側にも張りすぎた:Pパスに余分なメンバーを追加することを考えなかった – Sekhat

3

ちょうどあなたのアクションにパラメータを追加開始するために:あなたのビューで

public ActionResult List(string format) 
{ 
    ... 

    if(String.Compare("xml", format, true) == 0) 
    { 
     return View("ListInXml"); 
    } 

    return View("List"); 
} 

をあなたのRouteTableを変更せずに、このアクションにURLを作成することができます。

<!-- for HTML --> 
<%= Url.Action("list", "blogpost") %> 

<!-- for XML --> 
<%= Url.Action("list", "blogpost", new { format = "xml" }) %>