响应Xml / Json请求ala Rails

时间:2011-02-15 19:04:29

标签: c# ruby-on-rails asp.net-mvc

例如,来自Rails Guides

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中复制它。

2 个答案:

答案 0 :(得分:0)

您可以查看MVCContrib的simply RESTful routing

答案 1 :(得分: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);
}