2009-11-30 65 views
0

我正在使用ASP.NET 3.5。将PostBackURL添加到按钮并允许按钮后面的代码?

我有一个叫做btnSubmit的按钮,并且在PostBackURL中的这个按钮上,我有一个页面必须提交数据的URL。

<asp:Button ID="btnSubmit" runat="server" Text="Submit" CssClass="Hand" 
     PostBackUrl="http://now.eloqua.com/e/f2.aspx" /> 

现在,当我有这个我不能在像这样的按钮单击事件excecute更多的代码.....

Protected Sub btnSubmit_Click(ByVal sender As Object, 

    Dim name as String 
    name = "HELP" 

End Sub 

这是为什么,我怎么可以做一项PostBackUrl,仍然excecute代码当按钮被点击时?

注:回传网址位于另一COMPNAY谁将会捕获数据

回答

0

你能做到这一点?

<asp:Button ID="btnSubmit" runat="server" Text="Submit" CssClass="Hand" 
     Autopostback="true" /> 
Protected Sub btnSubmit_Click(ByVal sender As Object, 

    Dim name as String 
    name = "HELP" 
    Response.Redirect("http://now.eloqua.com/e/f2.aspx") 
End Sub 
+0

都能跟得上它不工作作为URL需求不能被用作Server.Transfer的(位于OT另一家公司)或Repose.Redirect(数据未被转移) – Etienne 2009-11-30 13:37:50

0

您可以在启动回发到其他服务器之前在Javascript中执行操作吗?

否则,如果您希望网页首先回发到您的服务器,以便您可以运行代码,则无法设置PostBackURL。您可以在代码运行后强制执行第二次回发,例如:

Response.Write(“document.forms [0] .submit();”);

只要表单知道在这种情况下要回发到的正确URL。

+0

否否否否...:|不要这样做。使用RegisterStartupScript和GetPostBackEventReference这种事情。 – Bryan 2009-11-30 20:52:16

+0

但是......这个想法是有效的。我会编辑我的答案。 – Bryan 2009-11-30 20:56:05

1

你需要以不同的方式解决这个问题。 PostBackUrl属性意味着你的服务器没有从用户的浏览器得到任何通知,它现在正在去一个新的URL,所以没有办法让事件触发。

两个选项:

1)添加的OnClientClick处理与AJAX调用做一些服务器处理。

2)通过Request.Redirect或Server.Transer捕获您在本地回传中需要的数据并以另一种方式将其发送到新服务器。 3)像bwarner建议的那样,你可以将你的页面回发给你自己的服务器,然后自动导致另一个回传。首先删除aspx中的PostBackUrl。然后加入这样的事情在你的按钮处理程序:

protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    name = "HELP"; // your code here 
    btnSubmit.PostBackUrl = "http://newserver/page.aspx"; 
    ClientScript.RegisterStartupScript(this.GetType(), "autopostback", ClientScript.GetPostBackEventReference(btnSubmit, "")); 
} 

虽然......说实话,我不是很确定GetPostBackEventReference荣誉PostBackUrl属性。让我们知道你是否知道这一点。 :)

+0

不,这不适合我......... – Etienne 2009-12-01 17:52:31

+0

因此,无论是否存在PostBackUrl集,GetPostBackEventReference都会生成相同的代码?我认为这会成为一个错误。 – Bryan 2009-12-01 20:32:13

0

怎么样不使用任何客户端代码,只是建立请求服务器端。你将不得不手动建立您的文章的数据,但我认为这是可行的:

private void btnSubmit_Click(object sender, System.EventArgs e) 
{ 
name = "HELP"; // your code here 

//form submit code 

//build all your fields into post data 
string field1 = Field1.Text; 
ASCIIEncoding encoding=new ASCIIEncoding(); 
string postData="field1="+field1 ; 
byte[] data = encoding.GetBytes(postData); 

// Prepare web request... 
HttpWebRequest myRequest = 
    (HttpWebRequest)WebRequest.Create("http://now.eloqua.com/e/f2.aspx"); 
myRequest.Method = "POST"; 
myRequest.ContentType="application/x-www-form-urlencoded"; 
myRequest.ContentLength = data.Length; 
Stream newStream=myRequest.GetRequestStream(); 
// Send the data. 
newStream.Write(data,0,data.Length); 
newStream.Close(); 
}