【问题标题】:ASP.NET MVC 3 Routing Multiple parameters without query stringASP.NET MVC 3路由多个参数没有查询字符串
【发布时间】:2012-05-29 00:28:40
【问题描述】:

我有以下路线设置,但它没有按我预期的方式出现。是的,我还是 MVC 的新手。

出来的方式是这样的。

http://localhost:29998/Home/States?make=Chrysler

我希望它出来的方式是这样的

http://localhost:29998/Home/Chrysler/States

当然,一旦你点击你的状态,它就会看起来像这样。

http://localhost:29998/Home/Chrysler/Florida

我真的很希望能够完全删除“家”并将其保留为

http://localhost:29998/Chrysler/States

routes.MapRoute(
                "States", // Route name
                "{controller}/{action}/{make}", // URL with parameters
                new { controller = "Home", action = "States", Make = "" } // Parameter defaults
            );

【问题讨论】:

  • 好的,所以如果我输入这样的 URL localhost:29998/Home/States?make=Chrysler 并在返回上放置一个断点,我会看到字符串 make 具有 Chrysler 的值,但是如果我使用此 URL,则字符串 make 需要一个空值。 localhost:29998/Home/States/Chrysler我确定有一些小事我正在寻找我应该做的事情我似乎无法想到它是什么
  • 'public ActionResult States(string make) { IEnumerable stateNames = new List(); stateNames = _repository.GetAllDealers(); var states = from state in stateNames where state.make == make orderby state.address.city 升序选择 state.ToDomainDealer();返回视图(states.ToList()); }' 'routes.MapRoute( "States", // 路由名称 "{controller}/{action}/{make}", // 带有参数的 URL new { controller = "Home", action = "States", make = UrlParameter.Optional } // 参数默认值 );'
  • 你是如何生成链接的?
  • @Html.ActionLink(item.make, "States", new { make = item.make })

标签: asp.net-mvc-3 razor asp.net-mvc-routing


【解决方案1】:

这是您的解决方案:

localhost:29998/Chrysler/States

routes.MapRoute(
                "States", // Route name
                "{make}/{states}/", // URL with parameters
                new { controller = "Home", action = "GetStateData", make="", states="" } 
            );

你应该把它放在默认路由方法的下面,这样它就不会使用你的控制器值。

【讨论】:

  • 它应该可以放置一个调试点并检查参数值。它必须像make = home,state = index。因此,为避免这种情况,请为永远的控制器添加更多路由,例如“home”/{action}/{id}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-25
  • 2017-11-03
  • 2019-05-16
相关资源
最近更新 更多