asp.net-mvc - MVC 4 路由无法正确读取 URL

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

您好,我的 MVC 4 应用程序中有一个如下 URL

http://localhost/ABC/Home/DeleteApp/3000

我已经配置了 RouteConfig.cs,如下

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

它会转到正确的 DeleteApp Controller ,但 ID 值为 Null。当我启用 firebug 时,它会显示正确的 URL。

可能会出现什么问题? 它调试并来到这里,但 id 字段为空;

public void DeleteApp(string id)
    {
        try
        {

             // delete logic
        }
        catch (Exception e)
        {
             //
        }
    }

最佳答案

可能的原因:

-> 检查您的“id”变量名称(必须与 RouteConfig 和 Controller 操作中的名称完全相同,区分大小写)

-> 在此路由之前映射了与模式匹配的其他路由

如果您有一个映射为 {controller}/{action}/{something} 的路由,另一个映射为 {controller}/{action}/{something_else} 的路由>,当您调用 url“Home/DeleteApp/3000”时,它无法判断 3000 是“something”还是“something_else”,因此它将采用第一个匹配项。

要使其正常工作,您必须使用“路线约束” http://www.codeproject.com/Articles/641783/Customizing-Routes-in-ASP-NET-MVC

关于asp.net-mvc - MVC 4 路由无法正确读取 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21874254/

相关文章:

javascript - 能够动态地将子列表项添加到 ViewModel

asp.net-mvc - 如何将editmodel/postmodel突变为域模型

c# - OpenXmlPowerTools DocumentBuilder 在单独的页面上合并文档

asp.net-mvc - 将长度从 2 更改为 5 时,在 URL 中显示 Unique SEO 代码两次

asp.net-mvc - 在 IIS6 上部署 ASP.Net MVC,为什么在启用通配符映射后得到 404?

asp.net-mvc-4 - Controller 中的asp.net mvc异常未在自定义ErrorHandler上处理

asp.net-mvc-4 - 如何使用 URL 重写和 ASP.NET Optimization bundle 管理 winhost 上的子域

asp.net-mvc-4 - BreezeJS 从服务器获取元数据,而不使用复杂对象(嵌套对象)的 Entity Framework

asp.net-mvc - MVC 3 中的百分比属性

asp.net-mvc-4 - 使用 Entity Framework 5 的工作单元和通用存储库