如何为查询字符串添加值?
我正在尝试这样做:
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"添加到查询字符串
那么,第一个问题可以用这个来解决:
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.