2013-10-26 152 views
0

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

/PatientProfile/Services/12 

12是此处的ID路由值 - 这基本上是显示的初始记录。这工作。然而,当我选择我的下拉的东西,它会重定向到这样的事情:

/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,但看到在行为上没有区别。

任何帮助非常感谢。

回答

0

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

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

希望这会有所帮助。

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

+0

感谢您的回复。我在此期间解决了根本没有使用路由值(而是使用简单的查询字符串参数 - 就像我使用传统的ASP)。 –