带参数的MVC redirecttoaction与Area

Moe*_*gha 5 asp.net-mvc asp.net-mvc-3

我们如何在redirecttoaction中传递参数和Area

return RedirectToAction("Index","Coupon1", 
                          new {Area = "Admin"},
                          new {id = currentcoupon.Companyid.id});
Run Code Online (Sandbox Code Playgroud)

Kar*_*ala 11

return RedirectToAction("Index", new { id = currentcoupon.Companyid.id, Area="Admin" });
Run Code Online (Sandbox Code Playgroud)

  • 最好提供一些解释,为什么*您的答案可以解决问题,而不是简单地发布一大块代码. (4认同)

Sar*_*zen 8

我没有足够的声誉来添加评论或进行更改,所以我只想将其添加为答案.明确的答案没有充分解释答案,会让一些人感到困惑.它假设一个默认的家庭控制器,因为它没有明确说明控制器,并且在为该区域定义另一个控制器时不适用于所有情况.重定向有许多重载,但实现所述目标的最简单的重载形式如下:

return RedirectToAction("Action", "Controller", new { id=YourId, Area="AreaName" });
Run Code Online (Sandbox Code Playgroud)

这篇文章的其他答案已经正确地重写了原始代码,但也没有引起你在大多数情况下需要指定控制器的注意.

匿名对象充当MVC路由映射器的包,以映射您可能希望包含在重定向中的所有路由值.


小智 6

如果您需要从注册在区域中的控制器重定向到没有区域的控制器,则必须将区域值设置为空,如下所示:

return RedirectToAction("Welcome", "Home", new { Area="" });
Run Code Online (Sandbox Code Playgroud)

如果没有 Area="",您将无法重定向到不同的控制器。


Ufu*_*arı 5

只需将参数添加到包含您所在区域的同一对象即可.

return RedirectToAction("Index","Coupon1", 
                        new {Area = "Admin", id = currentcoupon.Companyid.id});
Run Code Online (Sandbox Code Playgroud)