C# 将参数传递到URL ASP.NET MVC

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

我只是想知道将参数传递到包含您不希望传递到URL的字符的URL的最佳实践是什么。例如,我将字符串
/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我更新了我的答案,只是想我应该先帮你解决这个错误。