2010-03-08 61 views
0

我有一個ASP.NET MVC應用程序,其中有一部分我真的不想使用自動url功能。我有大量需要傳入的可選參數。這基本上是針對複雜的查詢表單的...並且未使用的參數(即具有默認值)不應該成爲URL的一部分。我喜歡所有其他元素的URL路由,但在這裏真的不合適。它不會讓網頁中的20個字段更具可讀性,其中17個爲空。我的主要問題是行動鏈接的基因組。在查詢編輯器的部分視圖上,我想要生成一個指向結果頁面的操作鏈接。他們都共享相同的模型(並且所有參數都是屬性)。ASP.NET MVC 2.0 ....從Model中生成查詢URL參數?

是否有一種方法可以生成從模型開始使用的查詢字符串參數?其他的(綁定到模型屬性的字段)默認情況下已經存在,但我需要一種方法來生成查詢字符串....最好是自動生成。

+1

你真的需要在URL中傳輸約20個參數嗎?爲什麼不使用POST? – mnemosyn

+0

該情景是一種複雜的報表過濾器。 URL是必需的,這樣人們可以基本上覆制/粘貼URL並在Intranet中發送(「嘿,看看這些銷售號碼.... xxx」)。 一些報告有很多潛在的過濾器。 想象一下CRM,銷售管理應用程序或一個愚蠢的小事件/票務管理系統....以及搜索表單。 – TomTom

回答

1

你所描述像一個簡單的if樹聲:

StringBuilder myQueryString = new StringBuilder(); 

if (parameter1 != null) 
    myQueryString.Append("&Parameter1=" + parameter1.ToString()); 

if (parameter2 != null) 
    myQueryString.Append("&Parameter2=" + parameter2.ToString()); 

假設至少一個參數已經在查詢字符串,當然。

+0

不是很正確....因爲這是服務器端。 主要問題可能出現在客戶端 - 操作鏈接的生成。我該如何做到最好 - 畢竟,我需要檢查每個可能的字段是否爲默認值,然後生成參數字符串。非常多的工作,你會不會說?在ASP.NET MVC框架中沒有支持嗎? – TomTom

+0

作爲客戶端問題,您可以編寫Javascript或jQuery來解決它,或者您可以將您的值發回控制器方法,創建所需的Url,然後將頁面轉發到您生成的Url,從而顯示搜索。後一種方法可能更容易,尤其是如果你不熱衷於編寫Javascript或jQuery。 –

+0

好的,所以MVC 2.0沒有內部提供(一個輔助方法)來做同樣的事情,並且基本上爲此產生一個客戶端調用?這會關閉它 - 並將其標記爲答案,不幸的是) – TomTom