【问题标题】:MVC5 Attribute Route, emitting null for route without optional paramsMVC5 属性路由,为没有可选参数的路由发出 null
【发布时间】:2014-04-18 03:10:22
【问题描述】:

我有控制器:

[RoutePrefix("")]

带有路由的动作:

   [Route("things-to-do/{filter1?}/{filter2?}/{filter3?}/{filter4?}/{Area?}", Name = "thingstodo")]
   public async virtual Task<ActionResult> ThingsToDo(string filter1 = "", string filter2 = "", string filter3 = "", string filter4 = "", string q = "")

如果我在浏览器中输入这些网址,这将起作用:

本地主机/待办事项
本地主机/待办事项/某事
本地主机/待办事项/某事/某事

但是这些都返回null:

Url.RouteUrl("thingstodo")  
Url.Action("ThingsToDo", "ControllerName")  
Url.Action(MVC.ControllerName.ThingsToDo())  

这些返回正确的网址:

Url.Action("ThingsToDo", "ControllerName", new { filter1 = "something", filter2 = "something" })
Url.Action(MVC.ControllerName.ThingsToDo("something", "something"))

在我不需要可选参数时如何正确生成 url 的任何帮助将不胜感激。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-5 t4mvc attributerouting asp.net-mvc-5.1


    【解决方案1】:

    我找到了一个可能的解决方案:

        [Route("things-to-do/{filter1}/{filter2}/{filter3}/{filter4}/{Area?}", Order = 1)]
        [Route("things-to-do/{filter1}/{filter2}/{filter3}/{Area?}", Order = 2)]
        [Route("things-to-do/{filter1}/{filter2}/{Area?}", Order = 3)]
        [Route("things-to-do/{filter1}/{Area?}", Order = 4)]
        [Route("things-to-do/{Area?}", Order = 5)]
    

    【讨论】:

      猜你喜欢
      • 2016-01-12
      • 2014-04-15
      • 2016-05-23
      • 1970-01-01
      • 1970-01-01
      • 2014-10-18
      • 1970-01-01
      • 2019-05-10
      • 2014-05-11
      相关资源
      最近更新 更多