2014-09-20 23 views
0

我正在開發一個網站,顯示數據從數據庫和網格顯示給用戶,然後有像僱員類型,薪酬等級e.t.c幾個過濾器。如何從查詢字符串參數中消除額外的值?

要求是用戶應該能夠通過複製URL並將其發送給別人來共享過濾結果,因此我使用Form.Get方法允許值通過查詢字符串傳遞給Action方法。

一切正常,只是URL追加空複選框的值以及URL的例如員工類型有3個複選框A類,B類和C類,可以說用戶只檢查了A類,URL生成的結果是:http://sitename.com/?classA=true&classB=false&classC=false

有沒有一種方法可以消除QS中的這些參數,因爲我被要求用複選框替換國家下拉菜單,以便用戶可以組合搜索,這種方式下,URL將繼續追加所有非選定的國家以及我將手動迭代每個值以過濾後端中的記錄。

提前感謝您的時間。

+0

我會散列查詢字符串,讓用MD5說。這樣,無論您有多少參數,您都不需要爲url的長度而煩惱。對於這個例子,你的url將如下所示:http://sitename.com?filter=69c5bb44363b87e0c604e88dc45fca15 – 2014-09-20 17:48:32

+0

你可以嘗試在jvascript中手動構建和執行URL。 – 2014-09-20 17:48:57

+0

@NatiDobkin:不知道它是否存在於C#/ asp.net – Vishal 2014-09-20 18:01:15

回答

0

嗯......我不是很famliliar WIF C# 但HtmlInputCheckBox類能爲你做到這一點...

或只寫有語言的一些簡短的腳本ü喜歡就好

if(value = false): cut the "&key=value" < (string) pair off 
goto next 
0

我不對c#沒有太多的想法,但這是如何在PHP中完成的。我相信你會在C#中找到類似的方法來做到這一點。

如果你需要傳遞多個值,它可以定義在查詢字符串鍵:?

鍵[] =值&鍵[] =數值&鍵[] =值N

你的情況如果ClassA和ClassB的選擇: http://sitename.com/?class[]=classA&class[]=classB

這是PHP如何閱讀:

$_GET["class"] = [ 
    0 => "classA", 
    1 => "classB" 
]; 

這樣您將只有URL中的選定參數。

更新:谷歌搜索它的C#,不知道它是否是最好的方式。

如:http://sitename.com/?class=classA&class=classB

以參數作爲一個字符串數組:

public Example(string[] a) 
{ 
    string first = a[0]; // classA 
    string second = a[1]; // classB 
    return View(); 
} 
相關問題