【问题标题】:MVC4 Routes issues when searching parameters are null or blank搜索参数为空或空白时的 MVC4 路由问题
【发布时间】:2013-08-18 12:50:24
【问题描述】:

我正面临路线问题并显示异常。这是由于当参数为空或空白时 - 这里当标题为空白时发出。

问题 URL:http://{ParentURL}/Admin/Menu/AddEdit/299921b2-3d7b-4e0a-b23e-5838f9b78654/1 - 当标题为空时

工作正常 URL:http://{ParentURL}/Admin/Menu/AddEdit/Test/299921b2-3d7b-4e0a-b23e-5838f9b78654/1 -> 这里测试是标题

context.MapRoute(
                    "AdminOperation",
                    "Admin/{controller}/{action}/{title}/{id}/{pageno}",
                    new { action = "AddEdit", id = UrlParameter.Optional, pageno = UrlParameter.Optional, title = UrlParameter.Optional }
                );

//控制器方法

public ActionResult AddEdit(string id,  string title, int? pageno)
{
}

请帮帮我。

问候

【问题讨论】:

  • 你能显示你的控制器代码吗?
  • 添加控制器方法
  • “Issue URL”中的标题不会为空,它会绑定到“299921b2-3d7b-4e0a-b23e-5838f9b78654”。路由占位符仅根据传入 URL 中值的顺序进行匹配。您是在问如何处理缺少值的错误,还是在问为什么 URL 中缺少该值?
  • 我在问如果 Title 是空白的,那么如何在不创建新路由的情况下使用提到的路由进行管理?

标签: asp.net-mvc-4 routes global-asax


【解决方案1】:

如果title 有时可能是null,在我看来,更好的方法是在没有它的情况下再添加一个route 并将其放在您提到的route 之前:

context.MapRoute(
           "AdminOperationShort",
           "Admin/{controller}/{action}/{id}/{pageno}",
         new { action = "AddEdit", id = UrlParameter.Optional, pageno = UrlParameter.Optional});  


     context.MapRoute(
           "AdminOperation",
           "Admin/{controller}/{action}/{title}/{id}/{pageno}",
           new { action = "AddEdit", id = UrlParameter.Optional, pageno = UrlParameter.Optional, title = UrlParameter.Optional }
                        );

【讨论】:

  • 这里使用你的方式它将在控制器方法中显示Id的标题值而不是标题需要显示空白。
猜你喜欢
  • 2021-02-21
  • 2019-07-16
  • 2011-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-06
  • 2019-04-25
  • 2012-10-11
相关资源
最近更新 更多