Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何指定RedirectToRouteResult_Asp.net Mvc - Fatal编程技术网

Asp.net mvc 如何指定RedirectToRouteResult

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

我现有的MVC代码包含如下操作例程:

[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公开的所有成员,寻找名称属性。)但我想我已经找到了一个更简单的解决方案(请参阅我在自己的问题中发布的答案)。