WebForm是否在运行时可以动态改变POST的URL?

Ki1381 2008-10-16 07:17:10
比如,按下按钮1 post到action1.aspx, 按钮2 post到action2.aspx

一定要是POST。谢谢。
...全文
159 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eagle_ice 2008-10-17
  • 打赏
  • 举报
回复
没做过WinForm的,帮顶...
JeffChung 2008-10-16
  • 打赏
  • 举报
回复
动态生成的控件没有状态,一post之后就消失了。
你必须想办法保持它们的状态,比较存进viewstate里,又或者存进hiddenfield里
mjjzg 2008-10-16
  • 打赏
  • 举报
回复
不是太懂了,帮顶
Ki1381 2008-10-16
  • 打赏
  • 举报
回复
谢谢各位参与。

现在遇到一个问题,发起页上有N+1个动态产生的TextBox,名字从T0,T1.....TN
发现在接收页用FindControl就取不到值了,但静态的就可以。动态生成的控件用Request.Form也能取到值,请问如何解决?

以下是我接受页面的部分代码。发起页应该没错,毕竟直接取Request.Form还是能取到值的:

// 静态的控件 - 可以
string spName = "";

object obj = Page.PreviousPage.FindControl("txtSPName");

if (obj != null)
{
spName = ((TextBox)obj).Text.Trim();
Response.Write(spName + "<br/>");
}



// 动态控件 - Request.Form能取到值
int i = 0;
object val = Request.Form["T0"];

while (val != null)
{
Response.Write(val.ToString() + "<br/>");
i++;
val = Request.Form["T" + i.ToString()];
}

// 动态控件 - 貌似FindControl不能取到值
i = 0;
object ctrol = Page.PreviousPage.FindControl("T0");

while (ctrol != null)
{
Response.Write(((TextBox)ctrol).Text.Trim() + "<br/>");
i++;
ctrol = Page.PreviousPage.FindControl("T" + i.ToString());
}
mm6268 2008-10-16
  • 打赏
  • 举报
回复
友情顶帖...UP
来看外星人 2008-10-16
  • 打赏
  • 举报
回复
<%@ page language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="head1" runat="server">
<title>Button.PostBackUrl Example</title>
</head>
<body>
<form id="form1" runat="server">

<h3>Button.PostBackUrl Example</h3>

Enter a value to post:
<asp:textbox id="TextBox1"
runat="Server">
</asp:textbox>

<br /><br />

<asp:button id="Button1"
text="Post back to this page"
runat="Server">
</asp:button>

<br /><br />

<asp:button id="Button2"
text="Post value to another page"
postbackurl="Button.PostBackUrlPage2cs.aspx"
runat="Server">
</asp:button>

</form>
</body>
</html>







<%@ page language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

void Page_Load (object sender, System.EventArgs e)
{
string text;

// Get the value of TextBox1 from the page that
// posted to this page.
text = ((TextBox)PreviousPage.FindControl("TextBox1")).Text;

// Check for an empty string.
if (text != "")
PostedLabel.Text = "The string posted from the previous page is "
+ text + ".";
else
PostedLabel.Text = "An empty string was posted from the previous page.";
}

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="head1" runat="server">
<title>Button.PostBackUrl Target Page Example</title>
</head>
<body>
<form id="form1" runat="server">

<h3>Button.PostBackUrl Target Page Example</h3>

<br />

<asp:label id="PostedLabel"
runat="Server">
</asp:label>

</form>
</body>
</html>



JeffChung 2008-10-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 JeffChung 的回复:]
asp.net中默认是post到自身的
[/Quote]

可以在按钮中设置PostBackUrl改变PostBack的页面

<asp:Button
ID="Button1"
PostBackUrl="~/TargetPage.aspx"
runat="server"
Text="Submit" />



更多内容请看Cross-Page Posting in ASP.NET Web Pages
lovehongyun 2008-10-16
  • 打赏
  • 举报
回复

<head>
<title>无标题文档</title>
<script language="javascript">
function acFun()
{
if (document.form1.ac.value=="2")
document.form1.action="a.aspx";
else
document.form1.action="b.aspx";
document.form1.submit()
}
</script>
</head>

<body>
<form name="form1" id=form1 method="post" action="">
请选择要提交到的页面:
<input type="radio" name="ac" value="a">
2.htm
<input type="radio" name="ac" value="b">
3.htm
<input type="button" name="Submit" value="按钮" onClick="acFun()">
</form>
</body>

JeffChung 2008-10-16
  • 打赏
  • 举报
回复
asp.net中默认是post到自身的
lovehongyun 2008-10-16
  • 打赏
  • 举报
回复
用js搞一下.
可以通过document改
document.formName.action

<script>
document.form1.action = "xxx.asp";
</script>
<form id=form1>
</form>

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧