У меня есть родительская страница (testFrame.aspx) , включая элемент iframe.
Элемент iframe представляет собой форму aspx (form.aspx) с элементом управления AsyncFileUpload(ajaxcontroltoolkit).
Форма содержит текстовое поле и обязательное поле проверки.
В коде bt_Send
я проверяю, ввел ли пользователь текст в текстовое поле, и если нет, я показываю сообщение об ошибке.
Теперь, если я проверю свою родительскую форму и введу текст и нажму «отправить», я увижу свое сообщение обратной связи (текст, введенный в текстовое поле).
Если я не введу текст,и я нажимаю «отправить», я получаю сообщение об ошибке.
Странная вещь происходит сейчас: если я не ввожу текст, но загружаю файл с помощью AsyncFileUpload.
Я нажимаю «отправить» и вместо этогополучения сообщения об ошибке, Я перенаправлен в form.aspx вне моей родительской страницы (например, target = "_ 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>
form.aspx выглядит следующим образом:
<%@ 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>
и код формы form.aspx.cs:
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";
}
}
}
}