早上好,我會盡力解釋這個儘可能乾淨。使用不同參數的MVC/JavaScript路由到此操作
頁面爲特定帳戶帶回信息,但有些人可能位於多個帳戶上,我希望提供在它們之間切換的功能。
目前,我有路線設置爲:
{controller}/{action}/{accountcode}
{accountcode}
可以是空的,這在動作檢查,並設置爲默認的代碼。
到目前爲止,我已經得到它做工精細,所以你可以訪問以下網址:
{controller}/{action} OR {controller}/{action}/{accountcode}
所以我成立了一個下拉列表,讓您可以訪問列表,選擇時它會將您發送到該特定帳戶的網址。
這個效果很好,當我去{controller}/{action}
並選擇,因爲它需要window.location.href
並附加下拉列表值。
但是,當您在{controller}/{action}/{accountcode}
下拉列表重定向到,並且您選擇一個帳戶,它只是試圖追加另一個帳戶代碼,因爲我的破舊的JavaScript邏輯。
我想我正在尋找一種方法來獲取沒有任何參數的當前操作的URL,因此我可以自己定義它們。這是我掙扎的地方,因爲我不能使用Url Helper或Route Helper方法,因爲此功能位於佈局頁面中,這意味着我需要獲取當前頁面的操作。
這裏是我的代碼,希望能提供清晰:
@if ((ViewBag.Accounts ?? new List<string>{"none"}).Count > 1)
{
@Html.DropDownList("accounts", new SelectList(ViewBag.Accounts, ViewBag.AccountCode))
}
$(function() {
$("#accounts").change(function() {
window.location.href = window.location.href + "/" + $(this).val();
});
});
乾杯!
光輝的榜樣,謝謝。由於我不知道你可以將null傳遞給Razor Url Helpers以獲得相同的動作,所以我試圖在JavaScript中處理'Request.Url.Segments',讓我得到我想要的東西,我掙扎於此。總而言之,這是一種200%的清潔方法。 – Malkin
對於'data- *'建議+1。無需擔心字符串是否被正確轉義。 – millimoose