2

我有一个问题,我相信有一个简单的解决方案,但是对于 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 并通过其中获取 IDRequest.QueryString

到目前为止,一切都很好。

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

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

4

2 回答 2

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>
于 2013-10-04T18:06:09.773 回答
0

不确定这是否适合您,但不要使用 html a 标签,而是使用 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 页面中使用您认为合适的会话参数。

于 2013-10-04T20:16:09.120 回答