【发布时间】:2018-05-15 02:45:04
【问题描述】:
我有一个非常奇怪的问题,我无法弄清楚。我不是路由专家,但这应该是直截了当的。
我有一个名为 NewsletterController 的控制器,它具有典型的 Index ActionResult。如果我在调试模式下运行我的网站并使用链接转到我的时事通讯部分,我会收到一条403.14 Forbidden 消息。如果我将“索引”添加到路线,那么它会转到 ActionResult 就好了。我以完全相同的方式使用 Index ActionResult 设置了其他控制器,并且工作正常。这个特定的控制器无法正常工作,我只是看不出问题出在哪里。
这是我的控制器代码:
public class NewsletterController : Controller
{
public ActionResult Index()
{
var vm = new NewsletterViewModel();
...CODE REMOVED FOR SPACE
return View(vm);
}
}
这是我的 _Layout.cshtml 中的操作链接:
@Html.ActionLink("Newsletters", "Index", "Newsletter", null, new { @class = "nav-link" })
我的路由类
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
如果我去这里,我会收到403.14 Forbidden 消息。
http://localhost:59571/Newsletter/
如果我将索引添加到它转到页面的路线中。
http://localhost:59571/Newsletter/index
【问题讨论】:
-
项目中是否有实际的
Newsletter文件夹?这会导致路由冲突。 -
宾果游戏!这就是问题所在。下次我一定要记住这一点。想弄清楚这一点肯定会让我发疯。谢谢!
标签: c# asp.net-mvc asp.net-mvc-routing