Querystring - 在c#中为querystring添加值

Sha*_*eKm 5 .net c# asp.net

如何为查询字符串添加值?

我正在尝试这样做:

String currurl = HttpContext.Current.Request.RawUrl;
var querystring = HttpContext.Current.Request.QueryString.ToString();

var PrintURL = currurl + (String.IsNullOrEmpty(querystring)) ?
    HttpContext.Current.Request.QueryString.Add("print", "y") : string.Empty;
Run Code Online (Sandbox Code Playgroud)

但我一直收到这个错误:

无法将类型'string'隐式转换为'bool'

我要做的就是获取当前网址并将"pring = y"添加到查询字符串

Don*_*nut 7

那么,第一个问题可以用这个来解决:

var PrintURL = currurl + (String.IsNullOrEmpty(querystring) ? 
   HttpContext.Current.Request.QueryString.Add("print", "y") : string.Empty);
Run Code Online (Sandbox Code Playgroud)

从原始代码改变的只是将结束语从(String.IsNullOrEmpty(querystring))(不需要的地方)移动到?:子句的结尾.这使得它明确地清楚你要做的是什么.
否则,编译器会尝试将String.IsNullOrEmpty(querystring)(是a bool)的结果连接到currUrl- 不正确,而不是首先将您的意图连接起来.

但是,你的HttpContext.Current.Request.QueryString.Add("print", "y")声明还有第二个问题.这回来了void,而不是string.你需要修改三元表达式的这一部分,以便它返回一个字符串 - 你想做什么?


小智 5

HttpContext.Current.Request.QueryString.Add("print","y")返回void,而不是字符串,因此您无法在三元表达式中使用该调用.另外,在Request上添加查询字符串不会影响您的HTTPResponse,我假设这是您想要做的.您需要制作新的URL并使用response.redirect让浏览器使用更新的查询字符串加载新的URL.

  • HttpContext.Current.Request.QueryString是readonly所以HttpContext.Current.Request.QueryString.Add("print","y")将引发异常. (7认同)