如何向querystring添加值?
我正在尝试这样做:
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;
但我一直收到这个错误:
无法将类型'string'隐式转换为'bool'
我想要做的就是获取当前网址并添加?pring = y到querystring
答案 0 :(得分:7)
嗯,第一个问题可以用这个来解决:
var PrintURL = currurl + (String.IsNullOrEmpty(querystring) ?
HttpContext.Current.Request.QueryString.Add("print", "y") : string.Empty);
从原始代码改变的只是将结束语从(String.IsNullOrEmpty(querystring))
(不需要的地方)移到?:
子句的末尾。这使得它明确地清楚你要做什么
否则,编译器会尝试将String.IsNullOrEmpty(querystring)
(bool
)的结果连接到currUrl
- 不正确,而不是首先想要的结果。
但是,您在HttpContext.Current.Request.QueryString.Add("print", "y")
语句中遇到了第二个问题。这会返回void
,而不是string
。你需要修改三元表达式的这一部分,以便它返回一个字符串 - 你想做什么?
答案 1 :(得分:5)
HttpContext.Current.Request.QueryString.Add(“print”,“y”)返回void,而不是字符串,因此您无法在三元表达式中使用该调用。另外,在Request上添加查询字符串不会影响您的HTTPResponse,我假设这是您想要做的。您需要制作新的URL并使用response.redirect让浏览器使用更新的查询字符串加载新的URL。
答案 2 :(得分:3)
String currurl = HttpContext.Current.Request.Url.ToString();
String querystring = null;
// Check to make sure some query string variables
// exist and if not add some and redirect.
int iqs = currurl.IndexOf('?');
if (iqs == -1)
{
String redirecturl = currurl + "?print=y";
}
不确定这是否是最干净的方式,但它有效。 谢谢大家的帮助
答案 3 :(得分:2)
这里有一些错误,你想要做的事情。
第一件事是QueryString集合是NameValueCollection。 Add方法具有void返回值。因此,即使尝试分配QueryString.Add的结果也无法正常工作。
其次,您无法修改QueryString集合。它是只读的。在Velocity Reviews上有一个回复,说明你正在尝试做什么。您应该使用新值重定向用户,而不是尝试修改查询字符串。
答案 4 :(得分:1)
currurl + (String.IsNullOrEmpty(querystring)
必须返回一个布尔值,因此条件必须不同。
答案 5 :(得分:1)
第一个问题是您需要使用?
var PrintURL = currurl + ((String.IsNullOrEmpty(querystring)) ? HttpContext.Current.Request.QueryString.Add("print", "y") : string.Empty);
下一个问题是HttpContext.Current.Request.QueryString.Add
没有返回任何内容,因此:
的一边返回void
,而另一边返回并清空字符串。