比如:
我的链接是: ?reason=1001#234
得到的Request.QueryString["reason"]是 1001
该怎么办?
我的链接是: ?reason=1001#234
得到的Request.QueryString["reason"]是 1001
该怎么办?
解决方案 »
- 配置文件丢失,请大家帮忙
- 如何配置服务器的数据库
- 开发基于facebook iframe, apple Safari 值不能存Session信息问题
- Repeater生成的表格IE9显示异常
- winform页面轮显
- 重新编译网站上传出错!
- 请问,这个教材里讲的这个例子如何运行?
- 求该句代码由C#改为VB.NET语法。
- WebForm 中的TreeView IE Web的一些问题,TreeView 控件是不是没有TreeView.SelectNode的属型的??
- 怎样按照指定的窗口大小显示链接到的页面?
- GridView1更新,为什么总是原来的值
- 如果您在google文本框输入东西,他会出现只能提示,现在我想问一下,我们可不可以把他的这个智能提示取下来,比如加入到我们自己的网页下面,那岂不爽歪歪了,能么?
但是request.url确是test.aspx?reason=1001是不是要用其它的方法?
接收时: Response.Write(Server.UrlDecode(Request.QueryString["reason"]));
显示:1001#234
估计是编码的时候就出了问题,楼上Server.UrlEncode貌似是个不错的方法。
可是,我是gridview中的一列做的链接,如下: HyperLinkField fieldReason = new HyperLinkField();
string[] hyperstring = { "day","reason" };
fieldReason.DataNavigateUrlFields = hyperstring;
fieldReason.DataNavigateUrlFormatString = "?day={0}&reason={1}";
fieldReason.DataTextField = "reason";
GridView_similar.Columns.Add(fieldReason);
该如何使用呢?
http://localhost:2519/web_trouble/Default.aspx?day=2009-11-11&reason=精轧设定不好,6#LOOP起套过大,废钢
/// 判断编码方式
/// </summary>
/// <returns>返回是utf8还是gb2312</returns>
private int JudgeCode()
{
HttpRequest Request = HttpResource.Context.Request;
int returnValue = (int)(CodeState.utf8);
if(!string.IsNullOrEmpty(this.GetUrlParam(Request.RawUrl, "keyword")))
{
string urlParam = this.GetUrlParam(Request.RawUrl, "keyword");
if (urlParam.IndexOf('%') < 0 || ((urlParam.Split('%').Length-1) % 3 != 0))
{
returnValue = (int)CodeState.gb2312;
}
else
{
returnValue = Utf8Matrix(urlParam.Substring(urlParam.IndexOf('%')+1)) == true ? (int)CodeState.utf8 : (int)CodeState.gb2312;
}
}
else if (!string.IsNullOrEmpty(this.GetUrlParam(Request.RawUrl, "DealerBizMode")))
{
string urlParam = this.GetUrlParam(Request.RawUrl, "DealerBizMode");
if (urlParam.IndexOf('%') < 0 || (urlParam.Split('%').Length % 3 != 0))
{
returnValue = (int)CodeState.utf8;
}
else
{
returnValue = Utf8Matrix(urlParam) == true ? (int)CodeState.utf8 : (int)CodeState.gb2312;
}
}
return returnValue;
} /// <summary>
/// utf8矩阵判断
/// </summary>
/// <param name="original">字符串来源</param>
/// <returns>bool型</returns>
private bool Utf8Matrix(string original)
{
bool isUtf8 = true;
string[][] matrix = new string[3][];
matrix[0] = new string[1] { "e" };
matrix[1] = new string[4] { "8", "9", "a", "b" };
matrix[2] = new string[4] { "8", "9", "a", "b" };
string[] arrayFormOriginal = original.Split('%');
for (int i = 0; i < arrayFormOriginal.Length; i++)
{
if (IncludeCharacter(arrayFormOriginal[i], matrix[i % 3]) == false)
{
isUtf8 = false;
break;
}
}
return isUtf8;
}
我当年的解决方案....
/// 转换函数
/// </summary>
/// <param name="codeTranslate"></param>
public void Convert(CodeTranslate codeTranslate)
{
HttpRequest Request = codeTranslate.HttpResource.Context.Request;
HttpServerUtility Server = codeTranslate.HttpResource.Context.Server;
Request.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
//为了解决escape()编码后 在服务器端无法对(%B7)解码 所以对其进行特殊处理
string szQueryString = StringHelper.SqlFilter(Server.UrlDecode(codeTranslate.GetQueryString(Request.RawUrl).Replace("%B7", "·")));
codeTranslate.HttpResource.Context.RewritePath("PriceSearchResult.aspx", null, szQueryString);
string szCityId = string.Empty;
string szBrandId = string.Empty;
string szKeyword = string.Empty;
string szUrlRefferrer = string.Empty;
szKeyword = GetStringValue("Keyword", Request);
szBrandId = GetStringValue("SearchId", Request);
szBrandId = (szBrandId==string.Empty?GetStringValue("BrandId", Request):szBrandId);
szCityId = GetStringValue("CityId", Request);
if (Request.UrlReferrer != null)
{
szUrlRefferrer = Request.UrlReferrer.ToString();
}
SearchCondition.insertData(szCityId, szBrandId, szKeyword, szUrlRefferrer);
Request.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
}
protected string getUrl(string str)
{
string strBeg = str.Substring(0, str.LastIndexOf("=")+1);
string strEnd = Server.UrlEncode(str.Remove(0, str.LastIndexOf("=") + 1));
return strBeg + strEnd;
}
再调用:
fieldReason.DataNavigateUrlFormatString = getUrl("?day={0}&reason={1}");
再HttpUtility.UrlDecode解析
url="a.aspx?name="+HttpUtility.UrlEncode("#abc")
如果没有更好的方法,我明天结贴