Jquery ASP.NET MVC:使用下拉列表中的参数将用户重定向到路由

Jquery ASP.NET MVC:使用下拉列表中的参数将用户重定向到路由,jquery,asp.net-mvc,ajax,Jquery,Asp.net Mvc,Ajax,我有一个下拉列表(标签),里面装满了自行车(更具体地说是它们的名字)。当用户在列表中选择自行车时,我希望他们重定向到所选自行车的详细信息页面 我有自行车详细信息的路线,例如: routes.MapRoute("BikeDetails", "bike/{bikeId}", new { controller = "Bike", action = "Detai

我有一个下拉列表(
标签),里面装满了自行车(更具体地说是它们的名字)。当用户在列表中选择自行车时,我希望他们重定向到所选自行车的详细信息页面

我有自行车详细信息的路线,例如:

routes.MapRoute("BikeDetails",
                "bike/{bikeId}",
                new {
                    controller = "Bike",
                    action = "Details"
                },
                new { bikeId = @"\d+" });
解决这个问题的最佳方法是什么?

我想也许我应该使用URL作为下拉列表项的值,然后使用JQuery重定向到所选的URL。但是,在以前处理过老式的普通ASP.NET之后,我不禁想,微软的员工们已经为类似这样的场景想出了一些聪明的办法


任何想法都值得赞赏

您可以这样做:

$("#yourselectid").change(function(){
  window.location = "bike/" + $(this).val();
});

我认为您的jQuery想法确实是可行的,尽管我可能不会将它与select的
change
事件联系起来,而是有一个触发重定向的按钮。一些浏览器,特别是使用屏幕阅读器的浏览器,在更改事件中表现不好——当您滚动到每个项目上时都会触发它。因为它会让你离开页面,这对一些用户来说可能是一件非常糟糕的事情


您可能还需要将select包装在一个表单中,该表单可以发回操作,并且还需要一个允许您通过post到达该操作的路径。该操作可以接受URL作为参数,并向URL发出重定向。这将涵盖关闭javascript的情况。

这是最简单的方法,但不太容易维护。:/例如,如果路由发生了变化怎么办?那么,使其更易于维护的一个步骤是在运行时在服务器端创建一个包含routename/routeurl的全局JSON对象。然后在javascript中可以编写类似window.location=approutes[“BikeDetails”]+$(this.val();具体如何实现此功能是另一个问题:)