静态路由MVC 4只有1个控制器

时间:2014-01-25 15:05:43

标签: c# asp.net-mvc

如何只有一条指向控制器和行动的特定路线。

我只有一个控制器和动作,这是我想让人们去的唯一地方:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
    name: "Default",
    url: "/",
    defaults: new { controller = "Question", action = "Index" }
);

这是我目前所拥有的,但是,我不希望它被允许转到除Question控制器和Index操作之外的任何地方。

2 个答案:

答案 0 :(得分:1)

您问题中的路线将强制执行您想要的规则。但是我不认为你需要“/”作为URL,我认为空字符串“”也可以正常工作。

routes.MapRoute(
    name: "Default",
    url: "",
    defaults: new { controller = "Question", action = "Index" }
);

由于您的网址中没有任何路由参数占位符,因此所有/的请求都将路由到QuestionController的Index操作。此外,所有其他网址将返回404未找到的回复。

即使该方法的第三个参数是“默认值”,它们也将始终适用。由于您未在url模板中指定{controller}或{action}标记,因此此路由不能用于访问任何其他控制器上的任何其他操作。

答案 1 :(得分:1)

如果您希望所有可能的网址指向一个操作,您可以执行以下操作:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
    name: "Default",
    url: "{*path}",
    defaults: new { controller = "Question", action = "Index" }
);