我已经为注册和登录创建了.ASCX控件,并在site.master中提供了参考。当点击登录时,登录弹出窗口应该出现并且注册相同。如果我先放置<uc:Login ID="ucLogin" runat="server" />
代码,那么登录工作并且注册没有,反之亦然。我认为问题在于:
<uc:Login ID="ucLogin" runat="server" />
<uc1:Registration ID="Registration" runat="server" />
我不知道将<uc1:Registration ID="Registration" runat="server"/>
放在<asp:LoginView runat="server" ViewStateMode="Disabled"
&gt;下是否合适整个site.Master页面如下所示:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Site.master.cs" Inherits="SiteMaster" %>
<%@ Register Src = "~/Controls/Login.ascx" TagName = "Login" TagPrefix = "uc" %>
<%@ Register Src="~/Controls/Registration.ascx" TagPrefix="uc1" TagName="Registration" %>
<!DOCTYPE html>
<html lang="en">
<head runat="server">
<asp:PlaceHolder runat="server">
</asp:PlaceHolder>
</head>
<body>
<form runat="server">
<asp:ScriptManager runat="server">
</asp:ScriptManager>
<asp:LoginView runat="server" ViewStateMode="Disabled">
<AnonymousTemplate>
<ul class="nav navbar-nav navbar-right">
<li> <uc:Login ID="ucLogin" runat="server" /> </li>
<li> <uc1:Registration ID="Registration" runat="server" /></li>
</ul>
</AnonymousTemplate>
</asp:LoginView>
</div>
</div>
</div>
<div class="container body-content">
<asp:ContentPlaceHolder ID="MainContent" runat="server">
</asp:ContentPlaceHolder>
<hr />
</div>
</form>
</body>
</html>
Login.ascx是:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Login.ascx.cs" Inherits="Login" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<asp:LinkButton ID="lnkLogin" runat="server" Text="Login"></asp:LinkButton>
<asp:Panel ID="pnlLogin" runat="server" CssClass="modalPopup" Style="display: none">
<div class="form-group">
<asp:Label runat="server" AssociatedControlID="Email" CssClass="col-md-3 control-label">User name</asp:Label>
<div class="col-md-9">
<asp:TextBox runat="server" ID="Email" CssClass="form-control" />
<asp:RequiredFieldValidator runat="server" ControlToValidate="Email"
CssClass="text-danger" ErrorMessage="The user name field is required." />
</div>
</div>
<div class="form-group">
<asp:Label runat="server" AssociatedControlID="Password" CssClass="col-md-3 control-label">Password</asp:Label>
<div class="col-md-9">
<asp:TextBox runat="server" ID="Password" TextMode="Password" CssClass="form-control" />
<asp:RequiredFieldValidator runat="server" ControlToValidate="Password" />
</div>
</div>
<div class="form-group">
<asp:Button runat="server" OnClick="LogIn" Text="Log in" CssClass="btn btn-default" />
</div>
</asp:Panel>
<cc1:ModalPopupExtender ID="popup" runat="server" DropShadow="false"
TargetControlID="lnkLogin" PopupControlID="pnlLogin"
BackgroundCssClass="modalBackground">
</cc1:ModalPopupExtender>
registration.ascx页面如下所示:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Registration.ascx.cs" Inherits="Registration" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc11" %>
<asp:LinkButton ID="lnkRegistration" runat="server" Text="Registration"></asp:LinkButton>
<asp:Panel ID="pnlRegistration" runat="server">
<div class="form-group">
<asp:Label runat="server" AssociatedControlID="EmailId" CssClass="col-md-2 control-label">Email Address</asp:Label>
<div class="col-md-10">
<asp:TextBox runat="server" ID="EmailId" CssClass="form-control" />
<asp:RequiredFieldValidator runat="server" ControlToValidate="EmailId" />
</div>
</div>
<div class="form-group">
<asp:Label runat="server" AssociatedControlID="Password" CssClass="col-md-2 control-label">Password</asp:Label>
<div class="col-md-10">
<asp:TextBox runat="server" ID="Password" TextMode="Password" CssClass="form-control" />
<asp:RequiredFieldValidator runat="server" ControlToValidate="Password" />
</div>
</div>
<div class="form-group">
<asp:Button runat="server" OnClick="CreateUser_Click" Text="Register" CssClass="btn btn-default" />
</div>
</asp:Panel>
<cc11:ModalPopupExtender ID="popup1" runat="server" DropShadow="false"
TargetControlID="lnkRegistration" PopupControlID="pnlRegistration"
BackgroundCssClass="modalBackground" CancelControlID="lnkCancel">
</cc11:ModalPopupExtender>
非常感谢任何帮助。
答案 0 :(得分:1)
真的,问题是你被要求创建.ASCX控件&#34;,其中引用中的所有内容都是单数。相反,您创建了两个控件(复数)。最好做一个控件,如:
在主人:
<%@ Register Src = "~/Controls/LoginRegister.ascx" TagName = "LoginRegister" TagPrefix = "uc" %>
...
<asp:LoginView runat="server" ViewStateMode="Disabled">
<AnonymousTemplate>
<uc:LoginRegister ID="ucLogin" runat="server" />
</AnonymousTemplate>
</asp:LoginView>
然后在新的组合loginregister.ascx
中<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Login.ascx.cs" Inherits="Login" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc" %>
<ul>
<li><asp:LinkButton ID="lnkLogin" runat="server" Text="Login"></asp:LinkButton></li>
<li><asp:LinkButton ID="lnkRegistration" runat="server" Text="Registration"></asp:LinkButton></li>
<ul>
<asp:Panel ID="pnlLogin" runat="server" CssClass="modalPopup" Style="display: none">
<div class="form-group">
<asp:Label runat="server" AssociatedControlID="Email" CssClass="col-md-3 control-label">User name</asp:Label>
<div class="col-md-9">
<asp:TextBox runat="server" ID="Email" CssClass="form-control" />
<asp:RequiredFieldValidator runat="server" ControlToValidate="Email"
CssClass="text-danger" ErrorMessage="The user name field is required." />
</div>
</div>
<div class="form-group">
<asp:Label runat="server" AssociatedControlID="Password" CssClass="col-md-3 control-label">Password</asp:Label>
<div class="col-md-9">
<asp:TextBox runat="server" ID="Password" TextMode="Password" CssClass="form-control" />
<asp:RequiredFieldValidator runat="server" ControlToValidate="Password" />
</div>
</div>
<div class="form-group">
<asp:Button runat="server" OnClick="LogIn" Text="Log in" CssClass="btn btn-default" />
</div>
</asp:Panel>
<asp:Panel ID="pnlRegistration" runat="server">
<div class="form-group">
<asp:Label runat="server" AssociatedControlID="EmailId" CssClass="col-md-2 control-label">Email Address</asp:Label>
<div class="col-md-10">
<asp:TextBox runat="server" ID="EmailId" CssClass="form-control" />
<asp:RequiredFieldValidator runat="server" ControlToValidate="EmailId" />
</div>
</div>
<div class="form-group">
<asp:Label runat="server" AssociatedControlID="Password" CssClass="col-md-2 control-label">Password</asp:Label>
<div class="col-md-10">
<asp:TextBox runat="server" ID="Password" TextMode="Password" CssClass="form-control" />
<asp:RequiredFieldValidator runat="server" ControlToValidate="Password" />
</div>
</div>
<div class="form-group">
<asp:Button runat="server" OnClick="CreateUser_Click" Text="Register" CssClass="btn btn-default" />
</div>
</asp:Panel>
<cc:ModalPopupExtender ID="popup" runat="server" DropShadow="false"
BackgroundCssClass="modalBackground">
</cc:ModalPopupExtender>
您还要更新* .cs文件以便新控件,以便链接的回发为PopUpExtender设置正确的字段。或者,更好的是,您重新编写该部分以使用javascript(并且仅使用javascript)来显示正确的面板,这样在用户按下登录或注册按钮之前不需要服务器事件。