gpt4 book ai didi

asp.net - ASP.Net MVC 中是否有与 Ruby on Rails 的respond_to format.xml 等价的等价物?

转载 作者:行者123 更新时间:2023-12-04 01:55:34 24 4
gpt4 key购买 nike

在 Ruby on Rails 中,您可以编写一个简单的 Controller 操作,例如:

def index
@movies = Movies.find(:all)

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

对于那些不熟悉 RoR 的人, def index在这种情况下将等同于 public ActionResult Index()在 ASP.Net MVC Controller 中,并允许以下调用:
http://example.com/Movies/Index从 View 返回为 html 页面 index.html.erb (想想 index.aspx) http://example.com/Movies/Index.xml以 xml 格式返回相同的数据( @movies 是包含所有 View 使用的数据的对象) http://example.com/Movies/Index.json返回一个 JSON 字符串,在进行需要相同数据/逻辑的 javascript 调用时很有用

ASP.Net MVC 中的等效流程(如果可能)可能看起来像这样(如果它可以不那么冗长,甚至更好):
public ActionResult Index()
{
Movies movies = dataContext.GetMovies();
// any other logic goes here

switch (format)
{
case "xml":
return View("XMLVIEW");
break;
case "json":
return View("JSONVIEW");
break;
default:
return View();
}
}

这真的很方便,不必让一堆不同的 Action 弄乱你的 Controller ,有没有办法在 ASP.Net MVC 中做类似的事情?

最佳答案

在我的博客中,我详细介绍了一种处理此问题的方法,该方法的运行方式与它在 Ruby on Rails 中的运行方式非常相似。您可以在帖子底部找到链接,但这是最终结果的示例:

public ActionResult Index()
{
return RespondTo(format =>
{
format.Html = () => View();
format.Json = () => Json(new { message = "hello world" });
});
}

这是帖子的链接: http://icanhascode.com/2009/05/simple-ror-respond_to-functionality-in-aspnet-mvc/

它可以通过 HTTP header 以及路由中的变量来检测正确的类型。

关于asp.net - ASP.Net MVC 中是否有与 Ruby on Rails 的respond_to format.xml 等价的等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2029896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com