我试图通过linkbutton的命令参数传递查询字符串值。它似乎没有得到值,只是在命令参数中传递实际文本。
页:
<asp:LinkButton ID="LinkButton1"
runat="server"
CausesValidation="False"
CommandArgument='<%=Request.QueryString("uid")%>'
CommandName="uid"
OnCommand="LinkButton1_Command" >Close Case</asp:LinkButton>
<asp:Button ID="Button2" runat="server" Text="Button" CausesValidation="False" />
代码背后的代码:
Protected Sub LinkButton1_Command(ByVal sender As Object, ByVal e As CommandEventArgs)
Label1.Text = "You chose: " & e.CommandName & " Item " & e.CommandArgument
End Sub
然后实际返回:
您选择了:uid Item&lt;%= Request.QueryString(“uid”)%&gt;
什么时候应该返回:
您选择了:uid Item 12345
谢谢J。
答案 0 :(得分:2)
CommandArgument='<%= Request.QueryString["Some value here"] %>'
或代码隐藏:
LnkBtnSubmit.COmmandArgument = Request.QueryString["Some value here"] ;
如果第一个不起作用,请尝试将'='更改为'#'以绑定它并在linkbutton或其容器上调用DataBind()
CommandArgument='<%# Request.QueryString["Some value here"] %>'
但是因为你需要在你背后的代码中调用DataBind(),你可能只想在那里设置值,这会让它更清楚发生什么
这是一个几乎相同但有一些好答案的问题:
ASP.Net LinkButton CommandArgument property ignores <%= .. %>
或者这一个
commandargument string not evaluating
答案 1 :(得分:0)
尝试直接获取CB的值。使用Request.Querystring(“key”)。
Protected Sub LinkButton1_Command(ByVal sender As Object, ByVal e As CommandEventArgs)
Label1.Text = "You chose: " & Request.QueryString("uid")
End Sub
答案 2 :(得分:0)
请记住,asp.net基于两个步骤显示页面:
* .aspx文件中的标记用于在服务器上创建页面对象,但<%=
语法将其输出直接写入响应流,绕过该标记;它相当于在你的代码中调用Response.Write()
。您无法在此处将其结果分配给属性,只需将其写入浏览器即可。现在应该很清楚为什么这不能按预期工作。它没有评估你的<%=
蜂在那里因为它无效。
相反,您可以使用数据绑定语法(<%#
,使用双引号而不是单引号),或者从后面的代码中将值写入页面对象。