【问题标题】:UrlParameter is always null in MVCUrlParameter 在 MVC 中始终为空
【发布时间】:2015-05-02 07:06:16
【问题描述】:

我无法在 MVC 中获取 UrlParameter 的值。我认为除了 1 件事之外,一切都设置正确。

这是我的地图路线

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
          "Banyo", // name it!
          "{controller}/{action}/{Filtre}", // Route name
           new { controller = "Banyo", action = "Marka", Filtre = UrlParameter.Optional } // Parameter defaults
        );

        routes.MapRoute(
            "Home", // Route name
            "{action}/{Filtre}", // URL with parameters
            new { controller = "Home", action = "Index", Filtre = UrlParameter.Optional }
        );

    }

这里是动作函数...

public ActionResult Marka(string Filtre = null)
    {
        return View();
    }

即使我输入 url "http://localhost:7555/Banyo/Marka/Seranit" ,并且 Filtre 总是返回 null 。我期待得到“Seranit”值 Filtre 参数。

如果我输入“localhost:7555/Banyo/Marka?Filtre=Seranit”; ...过滤参数给了我预期的值“Seranit”。我该如何解决这个问题?

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-routing


    【解决方案1】:

    我复制了你的路由配置并像你一样创建了一个控制器,它工作正常。你有默认路由吗?它是在自定义路由之前定义的吗?考虑到如果之前定义了默认路由,它将首先捕获它。告诉我,我可以帮助你。

    【讨论】:

    • 非常感谢您抽出宝贵时间。当我复制我的路线时,只有两条路线,自定义路线高于默认路线。现在我注释掉了默认的。它的行为仍然相同
    • 这很奇怪,我只是复制并粘贴了所有内容,并且成功了。请创建一个空项目并将您的代码复制并粘贴到那里。
    • 我刚刚创建了一个新的 mvc 项目并进行了复制,但它的行为方式相同 :( 你能把你的示例项目发给我吗???
    • 仅保留自定义路由以进行测试。
    • 是的,我刚刚添加了自定义的......但是如果我输入“localhost:7555/Banyo/Marka?Filtre=Seranit”,那么 Filtre 参数会给我这个值。我不明白为什么会这样
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-29
    • 2018-03-20
    • 1970-01-01
    • 2017-02-15
    • 2013-04-12
    • 2012-05-31
    • 1970-01-01
    相关资源
    最近更新 更多