我需要能夠在控制器中允許「+」符號進行某些操作。我建立一個標籤過濾引擎,允許這樣的事情(如計算器):/東西/標記/標籤名稱-1 +標籤名-2 +其他標籤允許在MVC 3中加上URL
我知道我可以在設置allowDoubleEscaping="true"
web.config,但這不是出於安全原因的最佳實踐。
我猜測有一種方法可能使用global.asax中的自定義文件管理器或其他註冊表?
我需要能夠在控制器中允許「+」符號進行某些操作。我建立一個標籤過濾引擎,允許這樣的事情(如計算器):/東西/標記/標籤名稱-1 +標籤名-2 +其他標籤允許在MVC 3中加上URL
我知道我可以在設置allowDoubleEscaping="true"
web.config,但這不是出於安全原因的最佳實踐。
我猜測有一種方法可能使用global.asax中的自定義文件管理器或其他註冊表?
StackOverflow可能將+視爲空白。他們最有可能映射路線/Stuff/Tagged/{*tags}
並在標籤上呼叫string.split()
。如果你不允許你的標籤中有空白,這實際上效果很好。
+
表示網址中的空白。您應該對它們進行URL編碼:
/Stuff/Tagged/tag-name-1%2Btag-name-2%2Bother-tag
我意識到這一點......但它不是視覺上的吸引力,不達到目的在這種情況下。現在有更多的網站正在使用URL中的加號來表示它的意思,比如Stack Overflow爲其標籤所做的。 –
這是不可能的,因爲[W3C](http://www.w3.org/Addressing/URL/5_BNF.html)標準指定+表示URL中的空格。 – Zasz
您可以使用簡單的替換:
string url = Url.Action("Index", "YourController");
url = url.Replace("%2b", "+");
這正是我正在做的。但IIS7允許'+'登錄url的唯一方法是在web.config中允許使用DoubleEscaping,這可能會帶來安全風險。 –
它可能有點過分偏執,請參閱http://stackoverflow.com/questions/1453218/is-enabling-double-escaping-dangerous –
你是對的,它太偏執。對於其他人來說,Wyatt的解決方案就是我目前使用的解決方案,而且效果很好。 –