在下面的代码中将 asyncPostBackTrigger 更改为 PostBackTrigger ,从而导致整页回发。
但是当我们将触发器用作 asyncPostBackTrigger 时,下面的代码根本没有做任何事情。
有关我做错的任何建议吗?
System.IO.StreamReader objReader;
objReader = new System.IO.StreamReader(someTextFile);
string content = objReader.ReadToEnd();
objReader.Close();
content = content.Replace("Text1", "Replacetext1");
System.IO.StreamWriter objWriter;
objWriter = new System.IO.StreamWriter(someTextFile);
objWriter.Write(content);
objWriter.Close();
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!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">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel runat="server" ID="UpdatePanel_1" >
<ContentTemplate>
<asp:CheckBox ID="chkNotKnown" runat="server" AutoPostBack="True"
Text="(Not Known)" OnCheckedChanged="chkNotKnown_CheckedChanged"/>
</ContentTemplate>
<Triggers>
<asp:asyncPostBackTrigger ControlID="chkNotKnown"/>
</Triggers>
</asp:UpdatePanel>
<asp:TextBox ID="txtDrCode" runat="server" OnFocus="this.style.borderColor='red'" OnBlur="this.style.borderColor=''"></asp:TextBox>
</form>
</body>
</html>
答案 0 :(得分:1)
chkNotKnown
位于UpdatePanel内,而txtDrCode
位于UpdatePanel之外。您还要将chkNotKnown
指定为asyncPostBackTrigger
,这与UpdatePanel中已存在的内容相同。
因此要么将触发器更改为PostBackTrigger
(导致完整的PostBack)
<Triggers>
<asp:PostBackTrigger ControlID="chkNotKnown" />
</Triggers>
或将TextBox放在UpdatePanel
中<asp:UpdatePanel runat="server" ID="UpdatePanel_1">
<ContentTemplate>
<asp:CheckBox ID="chkNotKnown" runat="server" AutoPostBack="True"
Text="(Not Known)" OnCheckedChanged="chkNotKnown_CheckedChanged" />
<asp:TextBox ID="txtDrCode" runat="server"></asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>