2015-08-24 30 views
1

我只是想知道將參數傳遞給包含您不希望傳遞給URL的字符的URL的最佳做法。例如,我傳遞字符串/LM/W3SVC/7/ROOT到URL,但我想通過它沒有反斜槓,從而相似LMW3SVC7ROOT將參數傳遞給URL ASP.NET MVC

我目前做到這一點是通過使用.Replace()的方式。這是我目前使用的全部代碼<a href="@Url.Action("Errors", new { id=item.Application.Replace("/", "").Replace(".", "")})"> @Html.DisplayFor(modelItem => item.Application) </a>,它工作正常,但每隔一次又一次發出警告,所以我只是想知道這是否是實現它的正確方式。

'Possible unintended reference comparison; to get a value comparison, cast the right hand side to type 'string'

在此先感謝。

+0

你應該URL編碼它的反斜槓,或者是有特殊原因不想這樣做? – ediblecode

+0

'item.Application'的類型是什麼?它是一個字符串嗎? – ediblecode

+0

不,沒有理由不使用它,也許是因爲缺乏知識,如果有的話。是的,這是一個字符串@jumpingcode –

回答

0

您遇到的問題是從var queryString = RouteData.Values["id"];。如果您在Visual Studio中查找並將鼠標懸停在var上,它會告訴您該特定的var的類型,在本例中爲Object

嘗試:

var queryString = RouteData.Values["id"].ToString(); 

在這種情況下,你發現你自己在你的字符串,這可能意味着服務器端,替換某些字符,你可能會不得不做一些額外的邏輯來應對,而不必這些字符在收到的字符串上。在你看來,只是包裝的idUrl.Encode

id = Url.Encode(item.Application) 

您將收到解碼的字符串此服務器端,即/LM/W3SVC/7/ROOT

+0

謝謝,這個擺脫了警告,但它是更好的我在未來使用'URL編碼''.Replace()'或者它並不重要? –

+0

@ D.M我更新了我的答案,只是認爲我會先幫助解決錯誤。 – ediblecode