C# 父页面,包括带有AsyncFileUpload的iframe表单。重定向到"_top";上传并单击“后”;“发送”;
我有一个包含iframe的父页面(testFrame.aspx) iframe是一个带有AsyncFileUpload控件(ajaxcontroltoolkit)的aspx表单(form.aspx)。C# 父页面,包括带有AsyncFileUpload的iframe表单。重定向到"_top";上传并单击“后”;“发送”;,c#,asp.net,asp.net-ajax,ajaxcontroltoolkit,asyncfileupload,C#,Asp.net,Asp.net Ajax,Ajaxcontroltoolkit,Asyncfileupload,我有一个包含iframe的父页面(testFrame.aspx) iframe是一个带有AsyncFileUpload控件(ajaxcontroltoolkit)的aspx表单(form.aspx)。 表单包含一个文本框和一个必需的字段验证器。 在bt_Sendcodebeahind中,我检查用户是否在文本框中输入了文本,如果没有,我将显示一条错误消息 现在,如果我测试我的家长表单,输入文本并单击“发送”,我会看到我的反馈消息(我在文本框中输入的文本)。 如果我没有输入文本,并单击“发送”,则会
表单包含一个文本框和一个必需的字段验证器。
在
bt_Send
codebeahind中,我检查用户是否在文本框中输入了文本,如果没有,我将显示一条错误消息
现在,如果我测试我的家长表单,输入文本并单击“发送”,我会看到我的反馈消息(我在文本框中输入的文本)。如果我没有输入文本,并单击“发送”,则会收到错误消息 现在奇怪的事情发生了:如果我没有输入文本,但我用AsyncFileUpload上传了一个文件。
我单击“发送”,没有收到错误消息,我被重定向到父页面之外的form.aspx(如target=“\u top”),没有错误消息。我只是在我的iframe中不再看到干净的表单 我不想那样。我希望表单保留在我的父页面中 testForm.aspx如下所示:
<!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 runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
This is a container page. The following is inside an iframe:
<br />
<iframe src="form.aspx" width="800px" height="400px"></iframe>
</div>
</form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="form.aspx.cs" Inherits="TestToolkit.form" %>
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="asp" %>
<!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>Test Form</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="lblFirstName" runat="server" Text="First Name"></asp:Label>
<asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox>
<br /><br />
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</asp:ToolkitScriptManager>
Upload picture: <asp:AsyncFileUpload ID="AsyncFileUpload1" runat="server" ClientIDMode="AutoID" />
<div id="uploadOk" style="position: relative; left: 330px; bottom: 40px; width:0px; height:0px; display: none;"><asp:Image ID="imgOk" ImageUrl="_img/check-mark-40.png" runat="server" style="" AlternateText="Erledigt!" /></div>
<br /><br />
<asp:Button ID="btSend" runat="server" onclick="btSend_Click" Text="Send" />
<br /><br />
<asp:Label ID="lblFeedback" runat="server"></asp:Label>
<asp:RequiredFieldValidator runat="server" ID="rfvFirstName" ControlToValidate="txtFirstName" Display="None" EnableClientScript="false" />
</div>
</form>
</body>
</html>
我想我找到了我问题的答案 如果上载了文件,但字段无效(或必填字段没有文本),则会出现问题 问题在回发时出现。因此,我所做的是使用
EnableClientScript=“true”
实现客户端验证:
对于客户端验证,除非正确填写了所有必填字段,否则不会进行回发
希望这能帮助人们解决我同样的问题。我想我找到了问题的答案。我把问题留了一会儿,以防有人有更好的解决方案。。。玩得开心;)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace TestToolkit
{
public partial class form : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btSend_Click(object sender, EventArgs e)
{
//ShowOrRemoveErrors();
if (IsValid)
{
lblFeedback.Text = txtFirstName.Text;
}
else
{
lblFeedback.Text = "Please enter your name";
}
}
}
}
<asp:RequiredFieldValidator runat="server" ID="rfvFirstName" ControlToValidate="txtFirstName" Display="None" EnableClientScript="true" />