我正在一个 asp.net 网站中实现用户控件。用户控件将用作所有页面的页眉。如何加载用户控件内容取决于用户(登录、注销、用户名)。
我怎样才能只加载一次我的用户控件?例如,当用户像 quora 一样登录时。要了解我的意思,请登录 quora,您会注意到:每次打开问题页面时,quora 标题都不会重新加载。只有主要内容会发生变化。
这是如何实现的?
我正在一个 asp.net 网站中实现用户控件。用户控件将用作所有页面的页眉。如何加载用户控件内容取决于用户(登录、注销、用户名)。
我怎样才能只加载一次我的用户控件?例如,当用户像 quora 一样登录时。要了解我的意思,请登录 quora,您会注意到:每次打开问题页面时,quora 标题都不会重新加载。只有主要内容会发生变化。
这是如何实现的?
我没有注册quora,但是公共页面仍然有一致的header,但是每次发出请求时都会下载header。我认为简单性使得很难判断整个屏幕正在重绘。
您可以使用 ajax 发出请求,并且只在您想要的情况下重绘页面的一部分。或者,你可以去老学校并使用框架(请不要)。
我建议您将标题放在母版页上并有几个内容页面。您仍然可以将其放入用户控件中。
如果您想保持用户控制并重新加载内容,它会有点复杂。您将不得不使用 JavaScript 来实现这一目标。在 ASP.NET 中,您可以使用 UpdatePanel。
<asp:UpdatePanel ID=”UpdatePanel1” runat=”server”>
<ContentTemplate>
<!-- this content can be refreshed on post backs -->
</ContentTemplate>
</asp:UpdatePanel>
要为登录用户提供单独的面板,您可以使用登录视图:
<asp:LoginView ID="HeadLoginView" runat="server" EnableViewState="false">
<AnonymousTemplate>
</AnonymousTemplate>
<LoggedInTemplate>
Welcome <span class="bold"><asp:LoginName ID="HeadLoginName" runat="server" /></span>!
[ <asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" LogoutText="Log Out" LogoutPageUrl="~/"/> ]
</LoggedInTemplate>
</asp:LoginView>