2013-06-05 41 views
0

我感覺有點困惑,感覺這應該是簡單的死亡。 (ASP.NET MVC3)將查詢參數添加到當前url客戶端

我們有一個Action,名爲「Product/List」。 我們在頁面上也有一個文本框,稱爲「到期日期」。 現在,如果它是空白的,我們不會使用它,如果它被填充,我們選擇帶有到期日期的產品。

根據選定的失效日期,還有一個「更新頁面」按鈕。

這需要添加到查詢字符串(或替換),這似乎很簡單;

$(button).bind('click', ... 
    window.location.href = '@Url.Action(...)?ExpiryDate=' + ExpiryDate; 
) 

它的作品,但對我來說,這看起來很糟糕,並且使新參數的添加真的很煩人。

我們不能使用@Url.Action(..., new { ExpiryDate=... }),因爲這需要在使用文本框後完成客戶端。

而且,此外,我們不要想要使用一個提交按鈕和一個HttpPost動作;這不是一個帖子,它是視圖的更新(加上它打破了瀏覽器的歷史)。

最有可能我失去了一些東西;最好的辦法是什麼?

+0

客戶端模板引擎對於這類事情來說非常棒。您可以將MVC Ajax表單發送到服務器的請求,並且服務器可以響應一些JSON。然後,客戶端模板引擎(knockout.js,mustache.js等)可以將結果直接與產品詳細信息(或使用您需要的查詢字符串參數的隱藏輸入)綁定到主窗體中。 –

+0

是的,謝謝,但我想要正確的網址,所以用戶可以給頁面添加書籤等。 – NiklasJ

回答

1

環繞你ExpiryDate輸入的形式(稱之爲expiryDate),做一個表單上提交

您可以選擇GET或POST作爲你action方法您的要求動詞,你可以有一個表單收集來檢查一個null expiryDate。

或者使用MVC中的ParameterBinding,它有一個名爲expiryDate的參數並檢查它是否爲null。 (你可能必須使它爲空)

+0

好吧,讓我們忽略NULL-ness,這還沒有問題。但是,這實際上似乎是一種專注,只是將表單提交爲GET請求。 – NiklasJ

+0

試一試,看看你如何去,記住如果它正常工作,將其標記爲正確的答案。如果你需要快速演示,我可以爲你填充我的答案。 – Peter