asp.net vb将querystring传递给commandargument

时间:2011-02-15 15:17:46

标签: asp.net vb.net

我试图通过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。

3 个答案:

答案 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基于两个步骤显示页面:

  1. 它首先使用asp.net页面生命周期中的步骤在服务器(Page类的实例)上构建一个对象。
  2. 构建此对象后,它使用它生成html以通过响应流发送到客户端。
  3. * .aspx文件中的标记用于在服务器上创建页面对象,但<%=语法将其输出直接写入响应流,绕过该标记;它相当于在你的代码中调用Response.Write()。您无法在此处将其结果分配给属性,只需将其写入浏览器即可。现在应该很清楚为什么这不能按预期工作。它没有评估你的<%=蜂在那里因为它无效。

    相反,您可以使用数据绑定语法(<%#,使用双引号而不是单引号),或者从后面的代码中将值写入页面对象。