我只是想知道将参数传递到包含您不希望传递给URL的字符的URL的最佳做法是什么。例如,我将字符串/LM/W3SVC/7/ROOT
传递给URL但我想在没有反斜杠的情况下传递它,因此像LMW3SVC7ROOT
我目前这样做的方法是使用.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 :(得分:0)
您遇到的问题来自var queryString = RouteData.Values["id"];
。如果您查看Visual Studio并将鼠标悬停在var
上,它会告诉您特定var
的类型,在本例中为Object
。
尝试:
var queryString = RouteData.Values["id"].ToString();
在这种情况下,您发现自己必须替换字符串中的某些字符,这可能意味着服务器端,您可能需要做一些额外的逻辑来应对,而不会在接收到的字符串上包含这些字符。在您的视图中,只需将id
包裹在Url.Encode
:
id = Url.Encode(item.Application)
您将收到此服务器端已解码的字符串,即/LM/W3SVC/7/ROOT