c# - Asp.net MVC4 强制路由参数

标签 c# asp.net asp.net-mvc asp.net-mvc-4

我有一个这样的 RouteConfig

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"}
        );
    }
}

但是当我尝试使用“http://example.com/controllername/action/166699406”时。它收到以下错误。我想要实现的是,我想让 id 参数成为强制性的。如果他们在 url 中没有 id 参数,它不应该命中路由并且应该显示 404。我知道我们可以通过空检查 Controller 中的参数来实现这一点。有什么方法可以在路由配置本身中进行管理。

No route in the route table matches the supplied values.

Exception Details: System.InvalidOperationException: No route in the route table matches the supplied values.

最佳答案

你应该在 web.confing 中而不是在路由中处理它。

<customErrors mode="On" defaultRedirect="/error/default">
  <error statusCode="403" redirect="/error/restricted"/>
  <error statusCode="404" redirect="/Default/DefaultRoute"/>
  <error statusCode="500" redirect="/error/problem"/>
</customErrors>

关于c# - Asp.net MVC4 强制路由参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24283373/

相关文章:

C# Try-catch 不捕获异常

jquery - 如何正确编写此 MVC razor 代码以与我的 javascript 一起使用?

asp.net - 如何在visual studio中查看cshtml页面?

c# - 在 asp.net 中从 Ajax POST 检索数据

asp.net-mvc - 使用 MVC 和图像(像素)跟踪电子邮件

c# - 在单独的实体项目中实现 EF6 个人用户帐户

c# - 使用 ReactJS SPA 在 .net Core 中进行身份验证

c# - 如何使用Accord.net C#提取音频功能

C# TCP 文件传输 - 图像半传输

c# - ASP.NET:更改隐藏代码中的 CSS 链接 href?