2013-12-10 48 views
0

您好我有一個頁面在剃刀中對信息進行排序,每次我需要對搜索進行一些更改時,我必須通過QueryString傳遞值,我有很多理由要這樣做。在RAZOR視圖中獲取方法的友好URL

現在我的URL看起來像這樣:

https://localhost:44300/Reports/TitleSearch/SearchDirectTarade/DirectTradeExclusive?Input.SelectedMarket=DirectTradeExclusive&Input.SelectedProduct=131&Input.SelectedIssuer=&Input.SelectedOperation=C&Input.SelectedSubjacentGroup=&Input.SelectedSubjacent=US0028962076&Input.SelectedStrike=# 

,我想使它看起來像這樣:

https://localhost:44300/Reports/TitleSearch/SearchDirectTarade/DirectTradeExclusive 

我還需要通過查詢字符串傳遞所有這些參數,所以 有是否有可能使我的URL在MVC4 Razor頁面中更加用戶友好?

回答

0
@Url.Action('MyAction', 'MyController', 
    new { Input.SelectedMarket = DirectTradeExclusive, 
      Input.SelectedProduct = 13 }) 
+3

你能解釋一下你的解決方案嗎? –

0

如果像你說的,「每次我需要做出一些改變我的搜索我有查詢字符串值傳遞」,那麼你有沒有其他選擇,只能通過他們的查詢字符串。

如果您不想在URL中包含參數,則可以在更改搜索時使用POST,也可以將它們設置爲Cookie或會話。

+0

我的應用程序不使用cookies和會話,我擁有了DataBase上的所有內容,當我將頁面從[POST]更改爲[GET]時,出現了我的問題。我在頁面上有一些javascript,它使[GET]給我的控制器,它不會通過[GET]傳遞formcollection,所以我必須通過QueryString傳遞javascript [GET]中使用的值。 –

0

這裏的主要問題是爲什麼你想讓這個url用戶友好?
如果您的主要目標是允許用戶發送/存儲此鏈接以後再類似的請求,那麼您已經解決了您的問題。在其他情況下,如果你想讓用戶記住簡短的URL,那麼你必須減少搜索參數的數量,或者散列你的搜索網址(比如bit.ly)。
基本上,我能想到的幾個解決方案:
如果你不需要但卻難免重複搜索的網址:張貼的值

  • 隱藏查詢參數
  • 隱藏查詢參數,cookie或httpheaders(小心一些firewals的過濾器頭)

,如果你想搜索,以但卻難免重複:

  • 個移動查詢參數的URL路徑(你可以將它們標記爲路由可選)
  • (我的最愛)保留原樣,或者只是縮短查詢參數的名字

基本上,如果你不這樣做搜索選項的數量有限,並且不必爲他們設置登陸頁面(使用搜索引擎優化),獲取搜索結果並將查詢字符串中的搜索參數放入查詢字符串(Google是一個最值得注意的例子)是一種普遍的做法

0

您可以更改URL邏輯或模式&默認值在App_Start/Route_Config文件中

可以更改默認模式。