如何只有一条指向控制器和行动的特定路线。
我只有一个控制器和动作,这是我想让人们去的唯一地方:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "/",
defaults: new { controller = "Question", action = "Index" }
);
这是我目前所拥有的,但是,我不希望它被允许转到除Question
控制器和Index
操作之外的任何地方。
答案 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" }
);