2016-03-11 56 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