MVC4:从下拉列表选择中动态更改路由值

时间:2013-10-26 13:44:49

标签: asp.net-mvc-4 razor-2

我有一个下拉列表作为记录导航控件 - 从下拉列表中选择一个值应该“跳转到”该记录。我觉得在这之前我已经完成了这样的工作,但我无法让这个工作。问题似乎是我无法获得下拉列表来更改最初调用页面的ID路由值。所以,假设我的页面是从这个URL调用的:

/PatientProfile/Services/12

12是此处的ID路由值 - 这实际上是显示的初始记录。这有效。但是,当我从下拉列表中选择某些内容时,它会重定向到这样的内容:

/PatientProfile/Services/12?ID=7

注意路径值ID中12是如何存在的。 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,但没有看到行为上的差异。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我会使用jquery。请确认下拉列表的生成ID以使其正常工作

$('#CurrentProfile_ID').change(function(){
    window.location('@Url.Action("Services", "PatientProfile", new { id = "----" })'.replace("----", $('#CurrentProfile_ID :selected').val()));
}); 

希望这有帮助。

PS。这听起来像是使用ajax调用更新的部分视图的完美情况,因此您不必回发。