2017-09-04 47 views
0

如何清除/刪除我的MVC操作不需要/支持的查詢字符串參數?ASP.NET MVC:刪除未使用/不支持的查詢字符串值

例如,我的行動需要,說一個ID和一個布爾標誌,這樣的網址會是這樣:http://localhost:someport/controller/action/?id=1&remove=true

但是,如果用戶鍵入類似,http://localhost:someport/controller/action/?id=1&remove=true&some-junk-param=0

然後,我當請求被處理時,要求some-junk-param被移除並且不在地址欄中顯示。

有什麼想法?

+1

只有通過檢查方法中的查詢字符串值,然後再次重定向到沒有「無效」值(您無法控制用戶在地址欄中鍵入的內容)的方法。 –

+0

@StephenMuecke:或者,一旦處理完請求,最好是徹底擺脫查詢字符串!我注意到,有些應用程序至少不是ASP.NET的! – Nauman

+0

如果用戶在瀏覽器中使用「後退」按鈕 –

回答

1

如果您需要擺脫不必要的查詢字符串參數,你有兩個常規選項:

  1. 做它在服務器端。只有使用重定向才能完成此操作,這意味着當瀏覽器詢問具有錯誤查詢字符串的網址時,服務器會將瀏覽器重定向到具有良好查詢字符串的網址。

注意事項:

  • 在這種情況下,我們有專門用於清洗查詢字符串冗餘查詢。
  • 用戶在瀏覽器歷史記錄中會有垃圾。

  • 做它的客戶端。 ASP.NET MVC模型聯編程序將從查詢字符串中僅獲得預期的參數,因此在查詢字符串中具有其他值時沒什麼不好。您可以使用javascript在客戶端檢查您的URL,並使用History API(IE10 +)重寫或不更改歷史記錄。
  • 注意事項:

    • 在這種情況下,你將不得不支持一下JS和C#代碼之間不允許參數一致性

    當然每一個方法是適合它的自己的情況,但看第二種方式的警告更好,因爲它影響開發者的期限,而第一種方式影響用戶期滿。