从用户控件获取值

时间:2013-10-04 18:03:11

标签: asp.net

我有一个问题,我相信有一个简单的解决方案,但对ASP.NET不熟悉,我不是很清楚。

我有一个用户控件,它有一个for循环,可以在列表中生成一堆超链接元素(如下所示>

<li><a href="blahblah.aspx?ID=1..../></li>
<li><a href="blahblah.aspx?ID=2..../></li>
<li><a href="blahblah.aspx?ID=3..../></li>
<li><a href="blahblah.aspx?ID=4..../></li>

接下来,该uc用于<form>标记中的另一个页面,method="post"<asp:button>并未真正使用。

接下来,当点击其中一个链接时,它将转到blahblah.asp并通过Request.QueryString

获取ID

到目前为止一切顺利。

我想做什么(以及这篇文章的原因)是我不想使用ID作为查询参数。我想在身体中传递ID。所以链接将是blahblah.aspx,它不会显示ID。

实现这一目标的最佳方式是什么?我尝试了几种不同的方法,但它没有用。

2 个答案:

答案 0 :(得分:0)

要在HTTP正文中发送数据而不是查询字符串,您需要执行HTTP发布。这很容易,只需使用带有隐藏参数的表单:

<li>
    <form action="blahblah.aspx" method="post">
        <input type="hidden" name="ID" value="1" />
        <input type="submit" value="submit" />
    </form>
</li>

要获取目标页面上的数据,请使用Request.Params而不是QueryString。

现在,如果您想使用超链接而不是“提交”按钮,您始终可以使用Javascript提交表单:

<li>
    <form id="myform1" action="blahblah.aspx" method="post">
        <input type="hidden" name="ID" value="1" />
    </form>
    <a href="#" onclick="submitForm('myform1')">Submit the form</a>

    <form id="myform2" action="blahblah.aspx" method="post">
        <input type="hidden" name="ID" value="1" />
    </form>
    <a href="#" onclick="submitForm('myform2')">Submit the form</a>
</li>

<script type='text/javascript'>
    window.submitForm = function(id) {
        document.forms[id].submit();
        return false;
    }
</script>

答案 1 :(得分:0)

不确定这是否适合您,但不使用html标签,而是使用asp LinkBut​​ton控件。然后,您可以处理此控件的命令事件,以便让for循环生成以下控件(或者更好地使用转发器):

<asp:LinkButton id="button1" runat="server" CommandArgument="1" OnCommand="SendToBlah" />
<asp:LinkButton id="button2" runat="server" CommandArgument="2" OnCommand="SendToBlah" />

private void SendToBlah(Object sender, CommandEventArgs e)
{
    Session["ID"] = e.CommandArgument;
    Response.Redirect("blahblah.aspx");
}

然后你可以在你认为合适的blahblah.aspx页面中使用你的会话参数。