如何指定RedirectToRouteResult

时间:2014-06-24 21:10:53

标签: asp.net-mvc

我现有的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>

2 个答案:

答案 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的一部分。