Отвечая на запросы Xml / Json аля Rails - PullRequest
1 голос
/ 15 февраля 2011

Например, из Направляющие рельсов .

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 голосов
/ 15 февраля 2011

Может, как-то так?

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);
}
0 голосов
/ 15 февраля 2011

Вы можете взглянуть на MVCContrib просто RESTful маршрутизация .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...