【问题标题】:Long querystring in LinkButtonLinkBut​​ton 中的长查询字符串
【发布时间】:2012-12-08 10:54:48
【问题描述】:

我正在动态生成一个链接按钮并通过迭代集合来设置它的 postbackurl,当我将鼠标悬停在它上面时,链接按钮会显示正确的 url,但是当我单击链接按钮时,只传递了预期的五个查询字符串参数中的三个。 我正在使用火狐 这是我的代码

    foreach(var item in collection)
{
linkbutton b = new linkbutton();

linkbutton.postbackurl="somepage.aspx?" + "param1="+ item.val1 + "&param2=" + item.val2
                       + "&param3=" + item.val3+ "&param4=" + item.val4+ "&param5="
                       +item.val5;  
PlaceHolder1.Controls.Add(b);
}

但是当我点击链接按钮浏览器打开

somepage.aspx?param1=val1&param2=val2&param5=val5

所有值都存在于集合项中 加上浏览器会忽略链接本身中的 param3,4 :

【问题讨论】:

  • 我认为这不是问题,但 val3 和 val4 旁边的字符串连接中的加号 + 符号彼此相邻。尝试添加空格。 C# 编译器不应该对你拥有它的方式有问题,而是逐步检查它以确保 postbackurl 设置为你所期望的
  • 您是否设置了断点来验证回发 URL 是否设置正确?
  • 有一个断点(就像我现在想打破这台电脑)

标签: asp.net query-string


【解决方案1】:

对于这种情况,您只需要asp:HyperLink 而不需要asp:LinkButton。您的代码中有一些错误。一个更优化/可读的版本将是这个

foreach(var item in collection)
{
    var btn = new HyperLink();

    btn.NavigateUrl=String.Format("somepage.aspx?param1={0}&param2={1}&param3={2}&param4={3}&param5={4}",
                item.val1,
                item.val2,
                item.val3,
                item.val4,
                item.val5);  
    PlaceHolder1.Controls.Add(btn);
}

希望这会有所帮助。

【讨论】:

  • 你让我亲爱的朋友 Thanx 一百万,但仍然想知道为什么我的代码没有产生正确的结果。任何 cmets 为什么它是错误的????是的,谢谢
猜你喜欢
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-18
  • 1970-01-01
  • 1970-01-01
  • 2018-09-15
  • 1970-01-01
相关资源
最近更新 更多