我有一个问题,我相信有一个简单的解决方案,但对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。所以链接将是blahblah.aspx,它不会显示ID。
实现这一目标的最佳方式是什么?我尝试了几种不同的方法,但它没有用。
答案 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 LinkButton控件。然后,您可以处理此控件的命令事件,以便让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页面中使用你的会话参数。