2

こんにちはみんな私はこの奇妙な問題で立ち往生しています、asp:HyperLinkコントロールはブラウザ内でレンダリングされていません、それはブラウザに送信される最終的なHTMLにも存在しません。

Home.aspxAsp.netマークアップ

<div class="LoginBox">
    <div id="LoginViewBox" runat="server">
          <asp:HyperLink ID="linkLogout" runat="server" OnClick="LogOut"></asp:HyperLink>
    </div>
</div>

ブラウザのHome.aspx

<div class="LoginBox">
  <div id="ctl00_HeadHolder_LoginViewBox">&nbsp;Welcome&nbsp;owaisBhai&nbsp;
  </div>
</div>

Home.Aspx.Cs

   protected void Page_Load(object sender, EventArgs e)
    {
       if(!IsPostBack)
       {
           LoginBoxManager.PopulateLoginBox(ref LoginViewBox, ref linkLogout);
       }
    }

LoginBoxManager.cs

    public static class LoginBoxManager
{
    public static void PopulateLoginBox(ref HtmlGenericControl loginViewBox, ref HyperLink linkLogout)
    {
        string LogInUrl = "Login.aspx";
        string WelcomeGuest = String.Format("&nbsp;Welcome Guest&nbsp;<a href='{0}'>[LogIn]</a>", LogInUrl);
        string WelcomeUser = "";

        if (HttpContext.Current.Session.Count == 0)
        {
            //user not authenticated
            loginViewBox.InnerHtml = WelcomeGuest;
        }
        else
        {
            //user authenticated
            WelcomeUser = 
            String.Format("&nbsp;Welcome&nbsp; {0}&nbsp;"
                                ,SmartSession<User>.LiveSession.UserName);
            loginViewBox.InnerHtml = WelcomeUser;
            linkLogout.Text = "[LogOut]";
        }
    }
}

PS:私は状況をよく説明したと思います。詳細を教えてください。

4

2 に答える 2

2

コードは asp:HyperLink をテキストに置き換えています。問題の行は次の行です。

loginViewBox.InnerHtml = WelcomeGuest;

InnerHtml プロパティを設定することで、LoginViewBox div に表示される HTML を置き換えます。

このアプローチの代わりに、div にラベルを追加することをお勧めします。これにより、次の最終構造が得られます。

<div id="LoginViewBox">
      <asp:Label ID="LoginLabel" runat="server"/>
      <asp:HyperLink ID="linkLogout" runat="server" OnClick="LogOut"></asp:HyperLink>
</div>

(私が ASP.NET をまっすぐにしてからしばらく経っているので、ラベル コントロールに必要な属性が他にもあるかもしれません)。

于 2012-06-09T20:21:28.473 に答える
1

linkLogout.NavigateUrlプロパティをどこにも設定していないようです。それを設定してみてください。

于 2012-06-09T20:19:58.843 に答える