MVC RedirectResult

Sta*_*ker 22 c# asp.net-mvc

我是MVC的新手可以有人告诉我RedirectResult用的是什么吗?

我想知道这有什么不同:

public ActionResult Index()
{
    return new RedirectResult("http://www.google.com");
}
Run Code Online (Sandbox Code Playgroud)

还有这个:

public RedirectResult Index()
{
    return new RedirectResult("http://www.google.com");
}
Run Code Online (Sandbox Code Playgroud)

Dar*_*rov 52

它用于执行HTTP重定向到给定的URL.基本上,它会在响应中发送302状态代码和Location标头,以便客户端现在向此新位置发出新的HTTP请求.

通常你会像这样使用它而不是显式调用构造函数:

public ActionResult Index()
{
    return Redirect("http://www.google.com");
}
Run Code Online (Sandbox Code Playgroud)

至于你的两个代码片段之间的区别,嗯,它比MVC相关更多C#问题.实际上RedirectResult派生自ActionResult,因此两者都是有效的语法.我个人更喜欢第一个,例如你决定改变这个重定向来返回一个视图:

public ActionResult Index()
{
    return View();
}
Run Code Online (Sandbox Code Playgroud)

如果您已明确指定返回类型RedirectResult而不是ActionResult您现在必须将其修改为ViewResult(可能不是很重要,但这是您必须执行的额外步骤).

  • `ActionResult`是一个抽象类,所以你永远不能返回它.您总是返回一个派生类,如ViewResult,RedirectResult,JsonResult,FileResult,JavaScriptResult,ContentResult,具体取决于您希望控制器操作做什么(渲染视图,重定向到另一个URL,返回JSON格式的数据,下载文件,. ..).就你的动作方法的签名而言,我建议你总是将`ActionResult`作为返回类型,因为我在答案中提到的原因. (15认同)