Created
May 3, 2012 15:42
-
-
Save masaru-b-cl/2586657 to your computer and use it in GitHub Desktop.
多重ポスト対策のミニマムコード
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<%@ Page Language="C#" AutoEventWireup="true" %> | |
<!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> | |
<script runat="server"> | |
protected void Page_Load(object sender, EventArgs e) | |
{ | |
if (!Page.IsPostBack) | |
{ | |
string token = GenerateToken(); | |
Session["Token"] = token; | |
ViewState["Token"] = token; | |
Label1.Text = ""; | |
} | |
} | |
protected void Button1_Click(object sender, EventArgs e) | |
{ | |
var vsToken = ViewState["Token"] as string; | |
var sToken = Session["Token"] as string; | |
if (vsToken == sToken) | |
{ | |
var newToken = GenerateToken(); | |
Session["Token"] = newToken; | |
ViewState["Token"] = newToken; | |
System.Threading.Thread.Sleep(2000); | |
Label1.Text = "更新完了しました!"; | |
} | |
else | |
{ | |
Label1.Text = "既に処理済みです!"; | |
} | |
} | |
protected void Button2_Click(object sender, EventArgs e) | |
{ | |
string token = DateTime.Now.ToString(); | |
Session["Token"] = token; | |
ViewState["Token"] = token; | |
Label1.Text = ""; | |
} | |
protected string GenerateToken() | |
{ | |
return Guid.NewGuid().ToString(); | |
} | |
</script></head> | |
<body> | |
<form id="form1" runat="server"> | |
<div> | |
<asp:Button ID="Button1" runat="server" Text="Update" onclick="Button1_Click" /> | |
</div> | |
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> | |
<div> | |
<asp:Button ID="Button2" runat="server" Text="Reset" onclick="Button2_Click" /> | |
</div> | |
</form> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment