2015-08-24 31 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