2016-03-11 26 views
1

这个问题是关于最新的DNN平台版本:DNN 8.0.1。 我想重定向到我的控制器类中的一个动作,但我无法做到这一点。Routing:RedirectToAction(string action)

例如以下检查:

// Check if user is voting on his own item if (item.CreatedByUserId == User.UserID) return RedirectToAction("Index");

这是当控制器试图返回一个动作我收到错误。 DotNetNuke.Services.Exceptions.ModuleLoadException:路由表中没有路由与提供的值匹配。 ---> System.InvalidOperationException:路由表中没有路由与提供的值匹配。

我不知道如何路由在DNN(MVC)中工作,我找不到有用的东西是。

谢谢!

+0

你的'Settings'操作方法在同一个控制器中? –

+0

不,在我的控制器中没有“设置”动作。我只是尝试了一些值。但是有一种索引方法,它也不适用于该方法/操作。 – Yvo

+0

你有没有试过指定控制器? RedirectToAction(“Action”,“Controller”)? –

回答

2

DNN的路由与MVC不同,因为它必须解开不同的模块。你可以在你的控制器中创建一个方法,以这种方式覆盖默认方法:

public new ActionResult RedirectToAction(string actionName, string controllerName, object routeValues) 
    { 
     var routeVals = TypeHelper.ObjectToDictionary(routeValues); 
     routeVals["controller"] = controllerName; 
     routeVals["action"] = actionName; 
     return Redirect(ModuleRoutingProvider.Instance().GenerateUrl(routeVals, ModuleContext)); 
    } 
+0

谢谢。您的解决方案奏效 但是,我仍然想知道是否可以在路由表中注册路由。你知道这是否可能,如果我可以做到这一点? – Yvo