2016-02-05 4 views
5

私はASP.NET(フレームワーク4.0)でプロジェクトを作成しています。私はAsp LinkBut​​tonをマスターページで使用しました。それは2ページ(Home.aspx & service.aspx)にリンクしています。ASP.NETの第2子ページでマスタページのLinkBut​​tonが起動しない

質問 そのLinkBut​​ton1はHome.aspxで動作し、service.aspxでは動作しません。 Home.aspxページ上の要素(Chromeブラウザを使用して)を点検しながら

protected void LinkButton1_Click(object sender, EventArgs e) 
    { 

     if (Request.Cookies["ASP.NET_SessionId"] != null) 
     { 
      Response.Cookies["ASP.NET_SessionId"].Value = string.Empty; 
      Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddMonths(-20); 
     } 
     FormsAuthentication.SignOut(); 
     Session.Abandon(); 
     Response.Redirect("~/Default.aspx"); 
    } 

をクリックしLinkBut​​ton1ため

<ul class="nav navbar-nav navbar-right"> 
    <li> 
     <asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click" AutoPostBack="true">Signout 
      <i class="glyphicon glyphicon-off"></i> 
     </asp:LinkButton> 
    </li> 
    <li class="dropdown"> 
     <a href="#" class="dropdown-toggle" data-toggle="dropdown"> 
      <span> 
       <asp:Label ID="lblName" runat="server" Text=""></asp:Label> 
      </span> 
      <i class="icon-user fa"></i> 
      <i class=" icon-down-open-big fa"></i> 
     </a> 
     <ul class="dropdown-menu user-menu"> 
      <li class="active"> 
       <a href="frmUserHome.aspx"> 
        <i class="icon-home"></i> My Account 
       </a> 
      </li> 
      <li > 
       <a href="frmUserHome.aspx"> 
        <i class="icon-home"></i> Personal Home 
       </a> 
      </li> 
      <li> 
       <a href="#"> 
        <i class="icon-hourglass"></i> Pending approval 
       </a> 
      </li> 
     </ul> 
    </li> 
</ul> 

User.master.csコードに従うよう

User.masterコードは、私は、コードの下に見つかりました

<li> 
    <a id="ctl00_LinkButton1" autopostback="true" href="javascript:__doPostBack('ctl00$LinkButton1','')">Signout 
     <i class="glyphicon glyphicon-off"></i> 
    </a> 
</li> 

とservice.aspx上(Chromeブラウザは、要素を検査)しながら

<li> 
    <a id="ctl00_LinkButton1" autopostback="true" href='javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$LinkButton1", "", true, "", "", false, true))'>Signout 
     <i class="glyphicon glyphicon-off"></i> 
    </a> 
</li> 

& Home.aspx service.aspx間の差は(クロムブラウザを介して要素を検査しながら)、そのなぜ?

+1

のコードあなたは[)(webform_DoPostBackWithOptionsを何ですか?]確認しました(http://stackoverflow.com/questions/20499444/what-does-webform-dopostbackwithoptions-行う)? LinkBut​​ton1のポストバックオプションを変更しているservice.aspxページにサーバーサイドコードがありますか? – Spidey

+0

これらのコードはservice.aspx上にありません – Ronp

+0

JavaScriptエラーをチェックしてください – Aristos

答えて

0

オリジナルのおかげでAnswerライター&リンクを提供してくれてありがとうございます。 LinkBut​​tonサーバーコントロールのPostBackUrlプロパティを設定し

は、それはそれはクロスのページへの投稿であることを意味して、代わりに通常の__doPostBackのasp.netフレームワークは、()「WebForm_DoPostBackWithOptions」を追加します。

私のコード要件に応じていくつかの変更が加えられました。

コードLinkBut​​ton1(User.master)ページのためのあなたの場合には、あなたが「PostBackUrl」を設定していない場合は、ASP.NETフレームワークもそう、Buttonコントロールのデフォルトでこれを追加しません

<li> 
    <asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click" PostBackUrl="~/Default.aspx">Signout 
     <i class="glyphicon glyphicon-off"></i> 
    </asp:LinkButton> 
    </li> 

これはおそらく次のサーバーサイドコードを使用してOnClick属性値を設定する別のコントロールが必要であることを意味します。

User.master.cs

protected void LinkButton1_Click(object sender, EventArgs e) 
    { 

     if (Request.Cookies["ASP.NET_SessionId"] != null) 
     { 
      Response.Cookies["ASP.NET_SessionId"].Value = string.Empty; 
      Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddMonths(-20); 
     } 
     FormsAuthentication.SignOut(); 
     Session.Abandon(); 
     PostBackOptions myPostBackOptions = new PostBackOptions(this); 
     myPostBackOptions.ActionUrl = "~/Default.aspx"; 
     myPostBackOptions.AutoPostBack = false; 
     myPostBackOptions.RequiresJavaScriptProtocol = true; 
     myPostBackOptions.PerformValidation = true; 

     // Add the client-side script to the HyperLink1 control. 
     LinkButton1.OnClientClick = Page.ClientScript.GetPostBackEventReference(myPostBackOptions); 
     Response.Redirect("~/Default.aspx"); 
    } 
+0

オリジナルの投稿があなたを助けてくれてうれしいです。マスターページに 'PostBackUrl'が設定されていない状態で両方の子フォームで動作が異なるのはなぜですか?これで問題が解決した場合は、それを承認済みとしてマークすることができます。 – Spidey

関連する問題