Asp.net mvc 何时使用RedirectToAction以及在何处使用RedirectToRouteResult? 问题

Asp.net mvc 何时使用RedirectToAction以及在何处使用RedirectToRouteResult? 问题,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,在哪种情况下,我可以使用RedirectToAction以及在哪里使用RedirectToRouteResult 我有如下两种行动方法 方法-1 方法-2 我也可以像下面那样编写相同的代码。唯一的区别是这次我使用了RedirectToAction来代替RedirectToRouteResult public class ActionResultTypesController : Controller { public ActionResult Content() {

在哪种情况下,我可以使用
RedirectToAction
以及在哪里使用
RedirectToRouteResult

我有如下两种行动方法

方法-1 方法-2 我也可以像下面那样编写相同的代码。唯一的区别是这次我使用了
RedirectToAction
来代替
RedirectToRouteResult

public class ActionResultTypesController : Controller
{
    public ActionResult Content()
    {
        return RedirectToAction("Fileresult", "ActionResultTypes");
    }
    public ActionResult Fileresult()
    {
        return View();
    }
}

两段代码都有共同的结果几乎相同,但…
使用几个自定义管线时会发生什么情况?是一种支持路由的替代方案

对于第二种方法,可以使用默认路线,但当需要使用具有3个或4个参数的特定路线时,可以使用第一种方法和指定的路线名称以及所有参数

您也可以在助手中找到此类选项,例如,新闻报纸网站:

您的项目有两条路线

routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", 
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
            );

            routes.MapRoute(
                "NewsRoute", // Route name
                "News/{action}/{year}/{month}/{day}/{news}", 
                new { controller = "News", action = "show", year = 2013, month = 6, news = "start-new" } 
            );
默认路由用于内容和特殊页面,新闻路由用于显示和编辑新闻

如果你需要建立一些网址,你必须这样做

@Url.Action("Home","Contact")

@Url.RouteUrl("NewsRoute", new RouteValueDictionary(new {action = "show", year = 2013, month = 6, news = "title news" }));

重定向也是一样的

在控制器中使用时,两者之间没有太大区别,就像您在示例中使用的一样

他们最终都达到了相同的目标。但是,RedirectToRouteResult()主要用于操作筛选器类型的场景,当仅用于控制器上的操作时,从外观上看,它有点不友好

两者都可以达到相同的目标。在大多数情况下,你需要问自己的问题实际上是:

  • 使用RedirectToRouteResult()时是否需要永久重定向标志
  • 使用RedirectToRouteResult()时是否要编写额外的代码
  • 如果你的答案是否定的或者我不知道,

    这可能是你最好的选择

    编辑:

    这里有一些关于什么是
    redirectoroutesult
    的说明

    在这里,您将注意到
    RedirectToRouteResult
    不是您通常在操作中调用以返回的内容。它用作多个
    重定向路由
    调用的返回类型。例如,在那本书中你会看到两个电话<代码>重定向路由和
    重定向路由永久

    它们都返回
    RedirectToRouteResult
    除了,
    RedirectToRoutePermanent
    返回带有永久重定向bool
    true
    的结果。这将返回一个
    HTTP 301状态代码


    希望这有帮助

    我是MVC新手,但发现我使用的是自定义类Authenticate,其中一个属性返回RedirectToRouteResult。该类不是控制器(或派生自它),因此RedirectToAction不可用,我将使用RedirectToRouteResult

    该属性如下所示:

        public RedirectToRouteResult NotLoggedInPage
        {
            get
            {
                return new RedirectToRouteResult(new RouteValueDictionary(new { action = "LoggedOut", controller = "Login" }));
            }
        }
    

    当u表示3-4个参数时,使用第一种方法。但是,在方法2的情况下,您可以像下面这样设置参数
    return RedirectToAction(“Fileresult”,“ActionResultTypes”,new{id=10})您是否可以解释一下,当使用RedirectToRouteResult()时,我是否需要永久重定向标志@PankajGarg我编辑了我的答案,以便更好地解释问题。请给我更多的时间。因为我也在研究我的发现。我不知道为什么你被否决了。但这是一个合理的问题。
    
    RedirectToAction("Action", "Controller", new { parameter = value });
    
        public RedirectToRouteResult NotLoggedInPage
        {
            get
            {
                return new RedirectToRouteResult(new RouteValueDictionary(new { action = "LoggedOut", controller = "Login" }));
            }
        }