我现有的MVC代码包含一个这样的动作例程:
[HttpPost]
public ActionResult Register1(SomeViewModel model)
{
return RedirectToAction("Register", new { p = model.PageNumber - 1 });
}
我想将此代码移到库例程中:
public static ActionResult ProcessPost(Controller controller, string action,
int pageNumber)
{
// Redirect to the specified action on the specified controller
return new RedirectToRouteResult( <something here> );
}
并从动作例程中调用它,如下所示:
return ProcessPost(this, "register", model.PageNumber);
某些人可以给我<something here>
代码,它产生ActionResult
,重定向到指定Controller上的指定操作(由字符串参数指定)(由Controller参数指定?) p>
答案 0 :(得分:0)
看一下RedirectToRouteResult上的文档似乎很简单:
var routeValues = new RouteValueDictionary();
routeValues.Add("Action", action);
routeValues.Add("Controller", controller.GetType().Name);
routeValues.Add("PageNumber", pageNumber);
var result = new (RedirectToRouteResult(routeValues);
答案 1 :(得分:0)
经过一些实验,这似乎是一个简单的解决方案:
return new RedirectResult(controller.Url.RouteUrl(
new { action = action, p = pageNumber }
));
显然,特定Controller实例上的Url方法非常智能,可以使用该实例将控制器名称作为完整URL的一部分。