ãƒã‚¹ãƒˆãƒãƒƒã‚¯ã‚’発生ã•ã›ãªã„方法

ãƒã‚¹ãƒˆãƒãƒƒã‚¯ã¨ã¯

PostBack

通常

ç¾åœ¨ãƒ–ラウザã«è¡¨ç¤ºã—ã¦ã„るページã¨ã¯åˆ¥ã®ãƒšãƒ¼ã‚¸ã‚’リクエストã™ã‚‹ã€‚
ãƒ‹ãƒ¥ãƒ¼ã‚¹ã‚µã‚¤ãƒˆã®æ§˜ã«ã‚るページを読ã¿çµ‚ã‚ã£ãŸã‚‰æ¬¡ã®ãƒšãƒ¼ã‚¸(別URL)・・・ã¨ã€‚
(é™çš„ページã§ã¯åŒã˜ãƒšãƒ¼ã‚¸ã‚’å†åº¦å‘¼ã³å‡ºã™æ„味ã¯ç„¡ã„)

ãƒã‚¹ãƒˆãƒãƒƒã‚¯

å‹•çš„ãªã‚µã‚¤ãƒˆã«ãŠã„ã¦åŒä¸€ãƒšãƒ¼ã‚¸ï¼šåŒä¸€URL内ã§ãƒ‘ラメーターを変ãˆã¦SQLã®å®Ÿè¡Œçµæžœã‚’表示ã—ãŸã‚Šã™ã‚‹ç›®çš„ã§ã€ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆå´ã‹ã‚‰ã‚µãƒ¼ãƒãƒ¼å´ã«å‡¦ç†ã‚’ç§»ã™ç‚ºã«ä½¿ç”¨ã™ã‚‹ã€‚
ãã®éš›ã€ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã«è¿”ã™(表示ã™ã‚‹)ページãŒåŒä¸€ãƒšãƒ¼ã‚¸ã§ã‚ã‚‹ã€ã¨ã„ã†å‡¦ç†ã€‚
イベントãƒãƒ³ãƒ‰ãƒ©ãƒ¼ã®ç™ºç”Ÿï¼†ãƒšãƒ¼ã‚¸é·ç§»ã—ãªã„処ç†ã¨åŒç¾©ã€‚
ASP.NETã§ã¯ãƒœã‚¿ãƒ³ã‚¯ãƒªãƒƒã‚¯ç­‰ã§ç™ºç”Ÿã•ã›ã‚‹äº‹ãŒã§ãる。
(発生ã—ã¦æ¬²ã—ããªã„時ã«ã‚‚発生ã—ã¦ã—ã¾ã†)
ãƒã‚¹ãƒˆãƒãƒƒã‚¯ã§ã¯æç”»ã‚’å…¨ã¦ã‚„り直ã™ã®ã§å‡¦ç†ã®ç„¡é§„ãŒå¤§ãã„。
以下ã¯ã€ä¸å¿…è¦ãªãƒã‚¹ãƒˆãƒãƒƒã‚¯ã‚’発生ã•ã›ãªã„ã€
ã¾ãŸã¯ãƒã‚¹ãƒˆãƒãƒƒã‚¯ç™ºç”Ÿæ™‚ã®æç”»ã‚’åˆ¶é™ã™ã‚‹æ–¹æ³•
ãªãŠã€F5押下時等ã®å†èª­ã¿è¾¼ã¿ã‚‚ãƒã‚¹ãƒˆãƒãƒƒã‚¯ã€‚

レスãƒãƒ³ã‚¹æ™‚ã«å‡¦ç†ã•ã›ãªã„

ãƒã‚¹ãƒˆãƒãƒƒã‚¯æ™‚ã¨é€šå¸¸æ™‚ã«å‡¦ç†ã‚’分å²ã•ã›ã‚‹
ãƒã‚¹ãƒˆãƒãƒƒã‚¯ãƒãƒƒã‚¯ã‹å¦ã‹ï¼Ÿã®åˆ¤å®š
if ( ! Page.IsPostBack ) {
 åˆå›žã®ã¿å®Ÿè¡Œã•ã›ã‚‹å‡¦ç†
 (ãƒã‚¹ãƒˆãƒãƒƒã‚¯æ™‚ã¯ã•ã›ãªã„処ç†)
}
bool ret = Page.IsPostBack;
⇒ ret : true(ãƒã‚¹ãƒˆãƒãƒƒã‚¯æ™‚)
⇒ ret : false(通常時)

リクエストã•ã›ãªã„

TextBoxã€RadioButtonã€CheckBoxç­‰

AutoPostBackプロパティをFalseã«ã€‚
<asp:TextBox runat="server" AutoPostBack="False"></asp:TextBox>
※デフォルト:False
通常ã€ã“れらã®ã‚µãƒ¼ãƒãƒ¼ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã®å‡¦ç†ã‚¤ãƒ™ãƒ³ãƒˆã¯å³åº§ã«ãƒãƒ³ãƒ‰ãƒ«ã•れãš(ãƒã‚¹ãƒˆãƒãƒƒã‚¯ãŒç™ºç”Ÿã—ãªã„)ã€ãƒœã‚¿ãƒ³ã‚¯ãƒªãƒƒã‚¯ã‚¤ãƒ™ãƒ³ãƒˆç­‰ã®ãƒã‚¹ãƒˆãƒãƒƒã‚¯ç™ºç”Ÿæ™‚ã«ã¾ã¨ã‚ã¦å‡¦ç†ã•れる。
ã‚ã–ã¨ç™ºç”Ÿã•ã›ãŸã„å ´åˆã«ã“れをTrueã«ã™ã‚‹ã€‚
(「ASP.NET Webフォーム ãƒã‚¹ãƒˆãƒãƒƒã‚¯ã‚’発生ã•ã›ã‚‹æ–¹æ³•ã€å‚ç…§)
ボタンã«ã“ã®ãƒ—ロパティã¯ãªã„。

Buttonã€Linkç­‰

OnClientClickプロパティã«Return False;を設定
<asp:Button runat="server" Text="Button" OnClientClick="return false;" />
クライアントå´ã®ã‚¤ãƒ™ãƒ³ãƒˆãŒå®Ÿè¡Œã•れãŸå¾Œã€ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã™ã‚‹ç‚ºã€
サーãƒãƒ¼å´ã®ã‚¯ãƒªãƒƒã‚¯ã‚¤ãƒ™ãƒ³ãƒˆãŒç™ºç”Ÿã—ãªããªã‚ŠASP.NETã®ç®¡ç†ã‚’離れる。
クリックã«ã‚ˆã£ã¦ä½•ã‹ã®å‡¦ç†ã‚’ã•ã›ã‚‹å ´åˆã¯JavaScriptç­‰ã®å‡¦ç†ãŒå¿…è¦ã€‚

※~aspx/~.js
<script>
  function fnMethod()
  {
    ~OnClientClickã§ç™ºç”Ÿã™ã‚‹ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆå´ã‚¤ãƒ™ãƒ³ãƒˆï½ž
  };
</script>
<asp:Button
  runat="server"
  Text="Button"
  ※サーãƒãƒ¼å´ã‚¤ãƒ™ãƒ³ãƒˆ
  OnClick="myButton_Click"
  ※クライアントå´ã‚¤ãƒ™ãƒ³ãƒˆ
  OnClientClick="fnMethod(); return false;" /><br />
※~.aspx.cs
public partial class WebForm1 : System.Web.UI.Page
{

 protected void myButton_Click(object sender, EventArgs e)
 {
  ~OnClickã§ç™ºç”Ÿã™ã‚‹ã‚µãƒ¼ãƒãƒ¼å´ã‚¤ãƒ™ãƒ³ãƒˆï½ž
 }
}

通常
OnClientClick
↓
OnClick

今回
myMethod()
↓
return false â†ã“ã“ã§å‡¦ç†ãŒæ­¢ã¾ã‚‹ã€‚
↓
Button1_Click() â†ç™ºç”Ÿã—ãªã„。

※ãªãŠã€ã‚µãƒ¼ãƒãƒ¼å´ã§å‡¦ç†ã—ãªã„ã®ã§ã‚れã°ASP.NET用ボタンã§ã‚ã‚‹<asp:Button>åŠã³runat属性ã¯å¿…è¦ãªã„ã®ã§htmlã®ãƒœã‚¿ãƒ³ãŒæœ›ã¾ã—ã„。
↓
<button
  onclick="fnMethod(); return false;">
  Button
</button>

Ajaxコントロールã«ã‚ˆã‚‹éžåŒæœŸé€šä¿¡

Ajax通信ã§ã¯å޳坆ã«ã¯ãƒã‚¹ãƒˆãƒãƒƒã‚¯ã¯ç™ºç”Ÿã™ã‚‹ãŒã€ç”»é¢å…¨ä½“ã®å†æç”»ã¯è¡Œã‚れãªã„。
「ASP.NET Webフォーム Ajax利用ã€å‚ç…§

<form>è¦ç´ 

※フォーム内ボタン

  


<form>
  <input type="submit" value="更新" />
  ⇒リクエスト処ç†ãŒç™ºç”Ÿã™ã‚‹
</from>

※フォーム無ã—

<button>ボタン</button>
⇒リクエスト処ç†ãŒç™ºç”Ÿã—ãªã„
å‰è¿°ï¼šreturn false; 設定ã—ãŸå ´åˆåŒæ§˜ã€
サーãƒãƒ¼å´ã¸ãƒªã‚¯ã‚¨ã‚¹ãƒˆãŒç™ºç”Ÿã—ãªããªã‚Šã€ASP.NETã®ç®¡ç†ã‚’離れる。
クリックã«ã‚ˆã£ã¦ä½•ã‹ã®å‡¦ç†ã‚’ã•ã›ã‚‹å ´åˆã¯JavaScriptç­‰ã®å‡¦ç†ãŒå¿…è¦ã€‚
「Buttonã€Linkç­‰ã€å‚ç…§

å‚考

リンクボタンã®PostBackUrl属性ã«åˆ¥URLを指定ã—ãŸå ´åˆ
※index.aspx
<asp:LinkButton
  ID="myLink"
  runat="server"
  OnClick="myLink_Click"
  PostBackUrl="~/next.aspx">
  LinkButton2
</asp:LinkButton>
index.aspx.cs(vb)ã«ãŠã‘るリンククリックイベントã¯ç™ºç”Ÿã›ãšã€
(next.aspx.cs(vb)ã«ãŠã‘ã‚‹ãƒªãƒ³ã‚¯ã‚¯ãƒªãƒƒã‚¯ã‚¤ãƒ™ãƒ³ãƒˆã‚‚åŒæ§˜)
ãƒã‚¹ãƒˆãƒãƒƒã‚¯ã¯ç™ºç”Ÿã—ãªã„。
通常ã®ãƒªãƒ³ã‚¯
<a href="next.aspx">aaa</a>
ã¨åŒã˜

Follow me!