Asp.net mvc 如何指定RedirectToRouteResult
我现有的MVC代码包含如下操作例程:Asp.net mvc 如何指定RedirectToRouteResult,asp.net-mvc,Asp.net Mvc,我现有的MVC代码包含如下操作例程: [HttpPost] public ActionResult Register1(SomeViewModel model) { return RedirectToAction("Register", new { p = model.PageNumber - 1 }); } return ProcessPost(this, "register", model.PageNumber); 我想将此代码移动到库例程: public static Acti
[HttpPost]
public ActionResult Register1(SomeViewModel model)
{
return RedirectToAction("Register", new { p = model.PageNumber - 1 });
}
return ProcessPost(this, "register", model.PageNumber);
我想将此代码移动到库例程:
public static ActionResult ProcessPost(Controller controller, string action,
int pageNumber)
{
// Redirect to the specified action on the specified controller
return new RedirectToRouteResult( <something here> );
}
有人能给我一个
代码,生成一个ActionResult
,重定向到指定控制器(由控制器参数指定)上的指定操作(由字符串参数指定)吗?查看上的文档似乎很简单:
var routeValues = new RouteValueDictionary();
routeValues.Add("Action", action);
routeValues.Add("Controller", controller.GetType().Name);
routeValues.Add("PageNumber", pageNumber);
var result = new (RedirectToRouteResult(routeValues);
经过一些实验,这似乎是一个简单的解决方案:
return new RedirectResult(controller.Url.RouteUrl(
new { action = action, p = pageNumber }
));
显然,特定控制器实例上的Url方法足够聪明,可以使用该实例获取完整Url中的控制器名称部分。谢谢。我不知道如何从控制器实例中获取路由值的控制器名称。我没有想到只使用反射来获取名称。(我在仔细查看Controller公开的所有成员,寻找名称属性。)但我想我已经找到了一个更简单的解决方案(请参阅我在自己的问题中发布的答案)。