0

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

/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,但没有发现行为差异。

非常感谢任何帮助。

4

1 回答 1

0

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

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

希望这会有所帮助。

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

于 2013-10-28T14:24:48.417 回答