Asp.net mvc 4 MVC4:从下拉列表选择动态更改路由值

Asp.net mvc 4 MVC4:从下拉列表选择动态更改路由值,asp.net-mvc-4,razor-2,Asp.net Mvc 4,Razor 2,我有一个下拉列表,用作记录导航控件-从下拉列表中选择一个值应该跳转到该记录。我觉得我以前做过这样的事情,但我不能让这件工作。问题似乎是,我无法使用下拉列表来更改最初调用页面时使用的ID路由值。假设我的页面是从这个URL调用的: /PatientProfile/Services/12 12是此处的ID route值这基本上是显示的初始记录。这很有效。但是,当我从下拉列表中选择某个内容时,它将重定向到如下内容: /PatientProfile/Services/12?ID=7 请注意,12仍然存

我有一个下拉列表,用作记录导航控件-从下拉列表中选择一个值应该跳转到该记录。我觉得我以前做过这样的事情,但我不能让这件工作。问题似乎是,我无法使用下拉列表来更改最初调用页面时使用的ID路由值。假设我的页面是从这个URL调用的:

/PatientProfile/Services/12
12是此处的ID route值这基本上是显示的初始记录。这很有效。但是,当我从下拉列表中选择某个内容时,它将重定向到如下内容:

/PatientProfile/Services/12?ID=7
请注意,12仍然存在于路由值ID中。ID 7是从下拉列表中选择的,但它作为新参数而不是路由值附加到URL中。我想做的是:

/PatientProfile/Services/7
下面是剃刀在我的下拉列表中的外观:

@using (Html.BeginForm("Services", "PatientProfile", FormMethod.Get))
{ 
    @Html.Label("ID", "View Profile:")
    @Html.DropDownListFor(model => model.CurrentProfile.ID, ViewBag.ProfileID as SelectList, new { onchange = "this.form.submit();" })  
}
我尝试了Html.DropDownList和Html.DropDownListFor,但没有发现行为上的差异


非常感谢您的帮助。

我将使用jquery来完成此任务。请确认dropdownlist的生成id,以使其正常工作

$('#CurrentProfile_ID').change(function(){
    window.location('@Url.Action("Services", "PatientProfile", new { id = "----" })'.replace("----", $('#CurrentProfile_ID :selected').val()));
}); 
希望这能有所帮助


另外,对于使用使用ajax调用更新的局部视图来说,这听起来是一个完美的情况,这样您就不必发帖了

谢谢你的回复。同时,我解决了这个问题,根本不使用路由值,而是像使用经典ASP一样使用简单的查询字符串参数。