我必须使用Form.Action重定向到将从我的页面中获取值的脚本。值得注意的是,这个脚本是外部的。
我的问题是我还想要点击的按钮并将Action连接到它,以便首先在代码中完成一些功能。
无论如何,我可以:
在按钮点击事件处理程序中,我可以设置Form.Action
,然后调用Form.Submit
之类的内容吗?
或
提前设置Form.Action
,然后在操作发生之前以某种方式回发按钮。
如果无法做到这一点,那么我们将非常感谢任何有关如何实现这一目标的指示。
答案 0 :(得分:3)
在ASPX中:
<asp:Button ID="btnSubmit" runat="server"
OnClientClick="$('form').get(0).setAttribute('action', 'ScriptActionUrl'); $('form').submit();"
Text="Submit">
</asp:Button>
在ASPX中:
<asp:Button ID="btnSubmit" runat="server" OnClick="btnSubmit_Click" Text="Submit">
</asp:Button>
在页面后面代码:
protected void btnSubmit_Click(object sender, EventArgs e)
{
Page.Validate(); //Do Validation or some other processing
if(Page.IsValid)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), "$('form').get(0).setAttribute('action', 'ScriptActionUrl'); $('form').submit();", true);
}
}
答案 1 :(得分:1)
这是一个您关心提交表单的表格吗?如果必须要做的只是提交它,您可以在按钮点击事件中构建POST提交的数据并将其发送出去,而无需重定向用户并继续处理您的代码。
有一种有用的文档可以通过多种方式来实现here。
通常,您将使用构建器构建POST数据,然后将其发送出去。这是一个例子:
// Create a new WebClient instance to send the data with
WebClient myWebClient = new WebClient();
// Collection to hold our field data
NameValueCollection postValues = new NameValueCollection();
// Add necessary parameter/value pairs to the name/value container.
postValues.Add("LoginName", tbLoginName.Text);
postValues.Add("Password", tbPassword.Text);
// Send off the message
byte[] responseArray = myWebClient.UploadValues("http://website.com", postValues);
// Decode and display the response.
tbResponse.Text = Encoding.ASCII.GetString(responseArray);
这段代码只是一个模拟,但如果这是你想要的路径,它应该指向正确的方向。
答案 2 :(得分:0)
您可以在后面的代码中执行您需要执行的操作,然后调用Server.Transfer(string url,bool preserveFormVariables);将请求移动到另一个页面来处理。
然后,您可以在其他页面使用Request.Form来获取所需的值。
答案 3 :(得分:0)
通过为任何按钮控件设置PostBackUrl属性(如asp.net按钮或链接按钮),这很有可能。有关概念证明,请执行以下操作:
Hello <Username>
返回给调用客户端。http://localhost:6107/DemoAsmx/demo.asmx
Username
PostbackUrl
属性设置为http://localhost:6107/DemoAsmx/demo.asmx/SayHello
这也可以通过javascript完成。我希望这会有所帮助。
答案 4 :(得分:0)
由于页面需要提交到不受您控制的页面,我建议您创建一个与按钮单击相关联的Web服务。使用以下代码,您可以创建在页面提交之前发生的javascript事件:
btnSubmit.Attributes.Add("onclick", "javascript:functionName()")
将functionName替换为您正在进行Web服务调用的函数的名称。这样可以添加基于Web服务结果取消表单提交的功能:
return false;