2011-02-15 95 views
1

例如,從Rails Guides響應Xml/Json請求ala Rails

def index 
    @posts = Post.all 

    respond_to do |format| 
    format.html # index.html.erb 
    format.xml { render :xml => @posts } 
    end 
end 

如果我調用這個控制器並且請求類型是html,那麼給出一個視圖。如果請求類型是xml,則給您XML。這裏沒有新東西。

在ASP.NET MVC中這樣做的最好方法是什麼?我知道你可以深入瞭解這個請求,但我很好奇別人在做什麼。我是而不是問如何檢查請求以查看請求類型是什麼,我知道如何做到這一點,我正在尋找任何標準或很酷的方式來處理這個問題。可能有一些非常好的處理方法,我正在尋找一些想法。

事實上,我很驚訝,框架還沒有從Rails複製這。

回答

0

也許這樣?

public class MyController : Controller 
{ 
    public ActionResult Index() 
    { 
     var posts = db.GetTable<Post>(); 
     ViewData["Posts"] = posts; 

     return RespondTo(new ActionResultChoiceMap 
     { 
      { "html",() => View()  }, 
      { "json",() => Json(posts) }, 
     }); 
    } 
} 

class ActionResultChoiceMap : IEnumerable<ActionResultChoice> 
{ 
    public void Add(string key, Func<ActionResult> handler); 
    public ActionResult Get(string key); 
} 

ActionResult RespondTo(ActionResultChoiceMap map) 
{ 
    var key = ... // get desired result type from request 
    return map.Get(key); 
}