C# 将参数传递到URL ASP.NET MVC
我只是想知道将参数传递到包含您不希望传递到URL的字符的URL的最佳实践是什么。例如,我将字符串C# 将参数传递到URL ASP.NET MVC,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我只是想知道将参数传递到包含您不希望传递到URL的字符的URL的最佳实践是什么。例如,我将字符串/LM/W3SVC/7/ROOT传递到URL中,但我希望传递它时不带反斜杠,因此类似于LMW3SVC7ROOT 我目前的做法是使用.Replace()。这是我目前使用的完整代码行,它工作正常,但偶尔会抛出一个警告,所以我只是想知道这是否是实现它的正确方法 ”可能的非预期参考比较;要进行值比较,请将右侧强制转换为键入“string” 提前感谢。您遇到的问题来自var queryString=RouteD
/LM/W3SVC/7/ROOT
传递到URL中,但我希望传递它时不带反斜杠,因此类似于LMW3SVC7ROOT
我目前的做法是使用.Replace()
。这是我目前使用的完整代码行
,它工作正常,但偶尔会抛出一个警告,所以我只是想知道这是否是实现它的正确方法
”可能的非预期参考比较;要进行值比较,请将右侧强制转换为键入“string”
提前感谢。您遇到的问题来自
var queryString=RouteData.Values[“id”]代码>。如果您在Visual Studio中查看并将鼠标悬停在var
上,它将告诉您该特定var
的类型,在本例中为对象
尝试:
在这种情况下,您发现自己必须替换字符串中的某些字符,这可能意味着服务器端,您可能需要执行一些额外的逻辑来处理,而不会在接收的字符串中包含这些字符。在您的视图中,只需将id
包装到Url.Encode
:
id = Url.Encode(item.Application)
您将收到解码字符串的服务器端,即/LM/W3SVC/7/ROOT
您遇到的问题来自var queryString=RouteData.Values[“id”]代码>。如果您在Visual Studio中查看并将鼠标悬停在var
上,它将告诉您该特定var
的类型,在本例中为对象
尝试:
在这种情况下,您发现自己必须替换字符串中的某些字符,这可能意味着服务器端,您可能需要执行一些额外的逻辑来处理,而不会在接收的字符串中包含这些字符。在您的视图中,只需将id
包装到Url.Encode
:
id = Url.Encode(item.Application)
您将收到此服务器端的已解码字符串,即/LM/W3SVC/7/ROOT
您应该使用中的反斜杠对其进行URL编码,或者不希望这样做的具体原因是什么?项的类型。应用程序
?它是一个字符串吗?不,没有理由不使用它,可能是因为缺乏知识。是的,它是一个字符串@JumpingCode是来自您的Url.Action
的错误吗?不,它实际上来自我的控制器在这行代码var queryString=routedData.Values[“id”]
var applications=db.elmaherors.Where(s=>s.Application.Replace(“/”,”).Replace(“.”,”)==queryString)
您应该在URL中用反斜杠对其进行编码,或者不想这样做是有具体原因的吗?项的类型。Application
?它是一个字符串吗?不,没有理由不使用它,可能是因为缺乏知识。是的,它是一个字符串@JumpingCode是来自您的Url.Action
的错误吗?不,它实际上来自我的控制器在这行代码var queryString=routedData.Values[“id”]
var applications=db.elmaherors.Where(s=>s.Application.Replace(“/”,”).Replace(“,”)==queryString)
谢谢,这消除了警告,但我以后使用URL Encode
优于.Replace(),我想我应该先帮你解决这个错误。谢谢,这样可以消除这个警告,但是我以后使用URL Encode
而不是.Replace()
更好吗?还是没关系?@d.M我更新了我的答案,只是想我应该先帮你解决这个错误。