我有一个带有Form元素(<form runat="server">)的母版页,一个带有Button元素(<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Sync" />)的内容页面,以及一个包含该Button1_Click函数的Code Behind页面.
用户进入页面并单击按钮.Code Behind代码执行(在服务器上),它在其中更新数据库中的某些表.Code Behind代码所做的最后一件事是InnerHTML在内容页面上设置Span元素,并显示成功或失败消息.
一切都很好.问题是如果用户刷新页面,则重新提交表单,浏览器会询问是否真的是用户想要的.如果用户回答是肯定的,则重新执行Code Behind代码并再次更新数据库.如果用户反应消极,则没有任何反应.
重新执行代码背后的代码并不是什么大问题.它不会伤害任何东西.但这并不是我想要的行为.
我知道我可以使用Response.Redirect()重定向回页面,但用户永远不会看到我的成功或失败消息.我应该提一下,消息实际上不仅仅是"成功"或"失败",否则我想我可以在Redirect上的QueryString中添加一些内容.
有没有办法从Code Behind代码重置Form元素,以便如果用户刷新页面,表单不会重新提交?
主页......
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="IntuitSync.SiteMaster" %>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" xmlns:ipp="">
<head runat="server">
</head>
<body>
<form runat="server">
<div runat="server" id="mainContetntDiv">
<asp:ContentPlaceHolder ID="MainContent" runat="server" />
</div>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
内容...
<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/Site.master" CodeBehind="SyncToCloud.aspx.cs" Inherits="IntuitSync.SyncToCloud" %>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Sync" />
<span runat="server" id="SyncStatus"></span>
</asp:Content>
Run Code Online (Sandbox Code Playgroud)
守则背后......
using System; …Run Code Online (Sandbox Code Playgroud)