我们如何在redirecttoaction中传递参数和区域
return RedirectToAction("Index","Coupon1",
new {Area = "Admin"},
new {id = currentcoupon.Companyid.id});
我们如何在redirecttoaction中传递参数和区域
return RedirectToAction("Index","Coupon1",
new {Area = "Admin"},
new {id = currentcoupon.Companyid.id});
return RedirectToAction("Index", new { id = currentcoupon.Companyid.id, Area="Admin" });
我没有足够的声誉来添加评论或进行更改,因此我将添加此作为答案。标记的答案不能充分解释答案,并且会使一些人感到困惑。它假定一个默认的家庭控制器,因为它没有明确说明控制器,并且当为该区域定义另一个控制器时,它不会适用于所有情况。重定向有很多重载,但实现既定目标的最简单的重载形式是:
return RedirectToAction("Action", "Controller", new { id=YourId, Area="AreaName" });
这篇文章的其他答案正确地重写了原始代码,但也没有引起您在大多数情况下需要指定控制器的注意。
匿名对象充当 MVC 路由映射器的包,用于映射您可能希望包含在重定向中的所有路由值。
如果您需要从注册在区域中的控制器重定向到没有区域的控制器,则必须将区域值设置为空,如下所示:
return RedirectToAction("Welcome", "Home", new { Area="" });
如果没有 Area="",您将无法重定向到其他控制器。
只需将您的参数添加到包含您的区域的同一对象。
return RedirectToAction("Index","Coupon1",
new {Area = "Admin", id = currentcoupon.Companyid.id});
如果有人已经使用模型来传递数据,例如:
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);