2013-10-26 131 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)。 –