Form 要素 ( ) を含むマスター ページ<form runat="server">
、Button 要素 ( <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Sync" />
) を含むコンテンツ ページ、および関数を含むコード ビハインド ページがありButton1_Click
ます。
ユーザーがページに来て、ボタンをクリックします。コード ビハインド コードが (サーバー上で) 実行され、データベース内のいくつかのテーブルが更新されます。コード ビハインド コードが最後に行うことはInnerHTML
、成功または失敗のメッセージを含むコンテンツ ページの Span 要素の を設定することです。
それはすべてうまくいきます。問題は、ユーザーがページを更新すると、フォームが再送信され、ブラウザがそれが本当にユーザーが望んでいるものかどうかを尋ねることです。ユーザーが肯定的に応答すると、Code Behind コードが再実行され、データベースが再度更新されます。ユーザーが否定的に応答した場合、何も起こりません。
Code Behind コードを再実行することは大したことではありません。それは何も傷つけません。しかし、それは私が本当に望んでいる動作ではありません。
Response.Redirect() を使用してページにリダイレクトできることはわかっていますが、ユーザーには成功または失敗のメッセージが表示されません。メッセージは実際には「成功」または「失敗」以上のものであることに言及する必要があります。それ以外の場合は、リダイレクトの QueryString に何かを追加できると思います。
コード ビハインド コードからフォーム要素をリセットして、ユーザーがページを更新した場合にフォームが再送信されないようにする方法はありますか?
マスターページは...
<%@ 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>
コンテンツ...
<%@ 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>
コードビハインド...
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;
using System.Web;
namespace IntuitSync
{
public partial class SyncToCloud : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//
}
protected void Button1_Click(object sender, EventArgs e)
{
/*
Do a bunch of stuff and put the results in syncResults which is a List.
*/
SyncStatus.InnerHtml = string.Join("", syncResults.ToArray()); // I'd rather do this...
//Response.Redirect(Request.Url.PathAndQuery, true); // ...and not do this.
}
}
}
どんな助けでも大歓迎です。