RedirectToAction和RedirectToRoute [英] RedirectToAction and RedirectToRoute

查看:275
本文介绍了RedirectToAction和RedirectToRoute的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的网页1的控制器,我要重定向到网页2,传递两个变量。

In my controller of webpage 1, I want to redirect to Webpage 2, passing 2 variables.

我试着用RedirectToRoute,但不能让它开始工作;显示错误的URL。 然后我切换到使用RedirectToAction。

I tried using RedirectToRoute, but cannot get it to work; wrong URL is displayed. I then switched to using RedirectToAction.

我的code:

路由

routes.MapRoute(
    "CreateAdditionalPreviousNames", // Route name
    "Users/{controller}/{action}/{userId}/{applicantId}", // URL with parameters
    new { controller = "UsersAdditionalPreviousNames", action = "Index", userId = UrlParameter.Optional, applicantId = UrlParameter.Optional } // Parameter defaults
);

RedirectToAction(其中工程)

RedirectToAction (which works)

return RedirectToAction("Index", "UsersAdditionalPreviousNames", new { userId = user.Id, applicantId = applicant.Id });

RedirectToRoute(不工作)

RedirectToRoute (doesn't work)

return RedirectToRoute("CreateAdditionalPreviousNames", new { userId = user.Id, applicantId = applicant.Id });

哦,还有一件事,你可以要求,而不是可选参数....如果是这样,如何​​?

Oh, and one other thing, can you make parameters required, rather than optional....if so, how?

推荐答案

省略参数默认为使参数要求:

Omit parameter defaults to make parameters required:

    routes.MapRoute(
    "CreateAdditionalPreviousNames", // Route name
    "Users/{controller}/{action}/{userId}/{applicantId}", // URL with parameters
    new { controller = "UsersAdditionalPreviousNames", action = "Index" }
);

有关路由重定向,试试这个:

For route redirect, try this:

return RedirectToRoute(new 
{ 
    controller = "UsersAdditionalPreviousNames", 
    action = "Index", 
    userId = user.Id, 
    applicantId = applicant.Id 
});

另一种习惯,我拿起从史蒂夫·桑德森没有命名您的路线。每个路由可以有一个空的名字,它让你显式地指定的所有参数:

Another habit I picked up from Steve Sanderson is not naming your routes. Each route can have a null name, which makes you specify all parameters explicitly:

    routes.MapRoute(
    null, // Route name
    "Users/{controller}/{action}/{userId}/{applicantId}", // URL with parameters
    new { controller = "UsersAdditionalPreviousNames", action = "Index" }
);

这篇关于RedirectToAction和RedirectToRoute的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆