Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net aspx:表单始终转发到同一页面_Asp.net_Forms - Fatal编程技术网

Asp.net aspx:表单始终转发到同一页面

Asp.net aspx:表单始终转发到同一页面,asp.net,forms,Asp.net,Forms,在products.aspx页面上,我创建了一个表单: <form id="send_info_form" method="post" action="send_email.aspx"> <input type="text" name="the_name /> <input type="submit" /> </form> 在ASP.NET中,默认情况下,标记将始终发布到同一页面。这允许您在ASPX页面中处理代码隐藏中的任何事件。你的问题不清楚

在products.aspx页面上,我创建了一个表单:

<form id="send_info_form" method="post" action="send_email.aspx">
<input type="text" name="the_name />
<input type="submit" />
</form>


在ASP.NET中,默认情况下,标记将始终发布到同一页面。这允许您在ASPX页面中处理代码隐藏中的任何事件。你的问题不清楚你到底想做什么。我可以想到三种可能的情况:

1) 您希望回发到同一页面,并根据处理结果切换UI元素(其他面板等)的可见性,或者在处理完成后将用户重定向到第二个目标页面。这是最常见的场景,也是我建议采用的方法,因为它将表单处理的所有逻辑保持在一个地方

2) 您可以指定一个PostBackUrl来为按钮控件等指定另一个(ASP.NET)页面。从那里,您可以使用PreviousPage属性从第一页上的元素到第二页上的元素进行处理。有关更多信息,请参阅


3) 如果您有一个单独的页面希望发布到一个您无法控制的非ASP.NET的页面(即,另一个站点的表单或您运行的PHP/ASP3.0站点),那么事情会变得非常困难。ASP.NET将所有内容放在一个巨大的元素中。由于标记不能可靠地嵌入到HTML中,您必须从codebehind手动执行静默POST,或者使用Javascript在提交时悄悄地提交ajax请求。

看起来您对ASP.NET的逻辑工作方式有误解-ASP.NET的模式与PHP或ASP的模式大不相同

看起来您更多地采用了ASP经典或PHP方法来直接处理表单和POST值的登录页,而不再需要这样做。您也不需要单独的页面来处理表单提交的逻辑;所有这些都由提交页面的codebehind中的事件处理程序处理

您应该使用ASP.NET的服务器控件来处理所有输入,而不是直接处理输入元素

你应该做的是:

在Products.aspx页面中:

E-mail Address: <asp:TextBox runat="server" ID="txtEmail" />
<asp:Button runat="server" ID="btnSubmit" OnClick="btnSubmit_Click" Text="Submit" />

我不能像普通形式一样使用它吗?
protected void btnSubmit_Click(object sender, EventArgs e) {
    string sendEmailTo = txtEmail.Text;
    // insert mail sending logic here
}