从ASP.Net MVC 6中的不同控制器调用操作的正确方法是什么

时间:2016-01-27 21:25:57

标签: asp.net asp.net-core-mvc

我得到了

  

没有路线与提供的值匹配

尝试返回RedirectToAction("Action", "Controller")时。方法签名表示“actionName”和“ControllerName”。我假设actionName是Controller中的方法名称,我是否正确?对于ControllerName,我使用没有Controller Sufix的Controller File Name。例:

return RedirectToAction("Index", "WebApp") 

其中IndexWebAppController的方法,而命令是从AnotherController

的方法发出的

调用者控制器和被调用者都在同一个应用程序的同一个Controllers目录中。

我很喜欢,因为在这个ASP.net MVC应用程序中还有Route属性和Action属性,你可以在这些属性上放置名称,而不是真正的方法名称。就我而言,我没有为我的尝试所涉及的方法配置Route["Name"][httpXXX("route", Name="dasdasdas")]

我一直在阅读MS文档和一些例子,但似乎我做的事情正确,但由于奇怪的原因,它不起作用。我甚至尝试使用Redirect("Controller/Action")并且问题消失但新问题是这种重定向方式不支持将数据参数传递到目标路由。

此时我不使用Views中的Action链接,与Form相关的链接不同。

如果至少有人能给我一个关于我在哪里可以找到信息的提示,我将非常感激。

1 个答案:

答案 0 :(得分:0)

从不同的控制器调用操作的正确方法是我正在使用的方法:

return RedirectToAction("AnActionMethodName", "AControllerWithoutControllerSufix"[, object values]);

我的问题是,花了几个小时后,我在useMvc方法中添加了两个Startup.Configure(...)次来电:

app.UseMvc();

app.UseMvc(routes =>
{
    routes.MapRoute(
    name: "default",
    template: "{controller=MyApp}/{action=Index}/{id?}");
});    

这是由于复制+粘贴代码造成的。显然混淆MVC组件负责参加重定向部分,因为正确的方式是我只使用一个。 (我是.Net平台及其框架的新手)

无论如何,我将此作为提醒,告知复制和粘贴代码的风险和后果。在某些时候,您的应用可能会发生奇怪的事情,原因可能是简单 复制+粘贴错误。