我剛剛開始了一個新的MVC項目,默認路由似乎沒有像我期望的那樣工作。MVC默認路由不能用於控制器
路由配置:
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 }
);
}
我有一個ActionLink
去「索引」動作「腳本」控制器,帶有@Html.ActionLink("Scripts", "Index", "Scripts")
。
public class ScriptsController : Controller
{
public ActionResult Index()
{
var model = new IndexModel();
.......
return View(model);
}
}
當點擊該鏈接時,瀏覽器嘗試導航到「http://localhost:1733/Scripts/」,瀏覽器顯示「目錄列表拒絕」錯誤。當我手動將URL更改爲「http://localhost:1733/Scripts/Index」時,它工作正常。
不應該默認路由自動推斷「索引」行動? 它似乎是工作的ManageController
類,這是默認的MVC網站模板的一部分(「http://localhost:1733/Manage」帶來了Index
的ActionResult的ManageController
)
我在做什麼錯?
項目根目錄中有一個「Scripts」目錄,它是用於存放JavaScript文件的默認MVC模板的一部分。這個應用程序將處理管理SQL腳本,所以只有一個巧合的名稱衝突。將控制器名稱更改爲'ScriptController'確實解決了這個問題。謝謝。 –