我们如何在redirecttoaction中传递参数和区域
return RedirectToAction("Index","Coupon1",
new {Area = "Admin"},
new {id = currentcoupon.Companyid.id});
答案 0 :(得分:11)
return RedirectToAction("Index", new { id = currentcoupon.Companyid.id, Area="Admin" });
答案 1 :(得分:8)
我没有足够的声誉来添加评论或进行更改,所以我只是将其添加为答案。明确的答案没有充分解释答案,会让一些人感到困惑。它假设一个默认的家庭控制器,因为它没有明确说明控制器,并且在为该区域定义另一个控制器时不适用于所有情况。 Redirect有许多重载,但实现所述目标的最简单的是:
return RedirectToAction("Action", "Controller", new { id=YourId, Area="AreaName" });
这篇文章的其他答案已经正确地重写了原始代码,但也没有引起你在大多数情况下需要指定控制器的注意。
匿名对象充当MVC路由映射器的包,用于映射您可能希望包含在重定向中的所有路由值。
答案 2 :(得分:5)
只需将参数添加到包含您所在区域的同一对象。
return RedirectToAction("Index","Coupon1",
new {Area = "Admin", id = currentcoupon.Companyid.id});
答案 3 :(得分:4)
如果您需要从区域中注册的控制器重定向到没有区域的控制器,您必须将区域值设置为空,如下所示:
return RedirectToAction("Welcome", "Home", new { Area="" });
没有区域=""您将无法重定向到其他控制器。
答案 4 :(得分:0)
如果某人已经在使用模型来传递数据,例如:
return RedirectToAction("actionName","ControllerName", model);
您可以在模型中包含Area
属性,并使用您要使用的任何区域对其进行初始化,
示例:
public class ViewModel
{
public ViewModel()
{
Area = "";
}
public string Area { get; set; }
public string OtherProperty { get; set; }
}
var model = new ViewModel
{
Area="myArea",
OtherProperty="other data"
}
return RedirectToAction("actionName","ControllerName", model);