【问题标题】:multiple runat server forms in asp.netasp.net 中的多个 runat 服务器表单
【发布时间】:2017-04-10 17:02:46
【问题描述】:

救命!

我有一个登录和一个注册 html 表单,每个都在单击表单本身上的相应链接时进行切换,并且没有回发或页面刷新事件。

问题是 asp.net 不允许我有两个 runat=server 表单。 我可以访问表单的输入字段。

我已添加 asp:Button 来代替为了访问 onclick 方法,但是当我从任何具有此 asp 按钮的表单中删除 runat="server" 时,asp.net 再次不允许我添加 asp 按钮(服务器端控件)!

问题:

如何访问表单的提交按钮,以便我可以执行注册和登录操作的必要代码

有没有办法实现我的目标? (可能是在启动时隐藏其中一个表单并在我单击切换链接时显示它的某种方式)

这是登录注册表的

代码:

<div>
<header>

        </header>
        <section>               
            <div id="container_demo" >

                <a class="hiddenanchor" id="toregister"></a>
                <a class="hiddenanchor" id="tologin"></a>
                <div id="wrapper">
                    <div id="login" class="animate form">
                        <form id="form1"  action="#" runat="server" > 
                            <h1>Log in</h1> 
                            <p> 
                                <label for="username" class="uname" data-icon="u" > Your email </label>
                                <input id="username" name="username" runat="server" required="required" type="text" placeholder="myusername or mymail@mail.com"/>
                            </p>
                            <p> 
                                <label for="password" class="youpasswd" data-icon="p"> Your password </label>
                                <input id="password" name="password" runat="server" required="required" type="password" placeholder="eg. X8df!90EO" /> 
                            </p>
                            <p class="keeplogin"> 
                                <input type="checkbox" name="loginkeeping" id="loginkeeping" value="loginkeeping" /> 
                                <label for="loginkeeping">Keep me logged in</label>
                            </p>
                            <p class="login button">
                                <asp:Button Text="Submit" runat="server" OnClick="Submit" /> 
                                <!--<input type="submit" value="Login" />--> 
                            </p>
                            <p class="change_link">
                                Not a member yet ?

                                <a href="#toregister" class="to_register">Join us</a>             //toggle link
                            </p>
                        </form>
                    </div>

                    <div id="register" class="animate form">
                        <form id="form2" action="#" runat="server" > 
                            <h1> Sign up </h1> 
                            <p style="margin-top:4px;margin-bottom:2px;"> 
                                <label for="usernamesignup" class="uname" data-icon="u">Your username</label>
                                <input id="usernamesignup" name="usernamesignup" runat="server" required="required" type="text" placeholder="mysuperusername690" />
                            </p>
                            <p style="margin-top:4px;margin-bottom:2px;"> 
                                <label for="emailsignup" class="youmail" data-icon="e" > Your email</label>
                                <input id="emailsignup" name="emailsignup" runat="server"  required="required" type="email" placeholder="mysupermail@mail.com"/> 
                            </p>
                            <p style="margin-top:4px;margin-bottom:2px;"> 
                                <label for="passwordsignup" class="youpasswd" data-icon="p">Your password </label>
                                <input id="passwordsignup" name="passwordsignup" runat="server" required="required" type="password" placeholder="eg. X8df!90EO"/>
                            </p>
                             <p style="margin-top:4px;margin-bottom:2px;"> 
                                <label for="mob1" class="uname" data-icon="u">Your mob no.</label>
                                <input id="mob" name="mob" runat="server" required="required" type="text" placeholder="9450.." />
                            </p>

                            <p class="signin button"> 
                                 <asp:Button Text="Submit" runat="server" OnClick="Submitr" />
                                <!--<input type="submit" value="Sign up"/> -->
                            </p>
                            <p class="change_link">  
                                Already a member ?
                                <a href="#tologin" class="to_register"> Go and log in </a>          //toggle link
                            </p>
                </form>
                    </div>

                </div>
            </div>  
        </section>





</div>

【问题讨论】:

  • runat=server 只能有一个表单,这是事实。因此,仅将您的输入排列成一种形式,并为两个按钮设置onclick。或者创建两个表单,但都不设置runat=server,为每个表单设置两个不同的动作(每个动作将是不同的aspx页面)并使用Page_Load事件处理提交。
  • 参考this article

标签: c# html asp.net forms runatserver


【解决方案1】:

好啊,动脑筋终于搞定了!

这就是我所做的:

在两个服务器端表单上都应用了 asp 按钮

在注册表单上:

<asp:Button Text="tologin" runat="server" OnClick="changetologin" ForeColor="#1DA2C1" BackColor="#F7F8F1" /> 

在登录表单上:

<asp:Button Text="Join us"  runat="server" OnClick="changetosignup" ForeColor="#1DA2C1" BackColor="#F7F8F1" />

页面加载时:

protected void Page_Load(object sender, EventArgs e)
{
    if (Session["form2"] == null && Session["form1"] == null) //show login hide signup
    {
        form1.Visible = true;
        form2.Visible = false; 

    }


    if (Session["form2"] != null && Session["form1"]==null ) //show signup hide login
    {
        form1.Visible = false;
        form2.Visible = true;
        Session["form2"] = null;
    }
    if (Session["form1"] != null && Session["form2"] == null)     //show login hide signup
    {
        form1.Visible = true;
        form2.Visible = false;
        Session["form1"] = null;
    }

}

点击切换按钮的注册表单:

protected void changetologin(object sender, EventArgs e)
{

    Session["form1"] = "clicked";

    Response.Redirect("#tologin");

}

点击切换按钮登录表单:

 protected void changetosignup(object sender, EventArgs e)
{
    Session["form2"] = "clicked";

     Response.Redirect("#toregister");


}

简而言之: 表单可见属性和会话变量的组合成功了!!

【讨论】:

  • 您在 2016 年的问题在 2019 年挽救了我的生命!谢谢!
猜你喜欢
  • 2010-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-14
  • 2011-07-20
  • 1970-01-01
  • 2011-10-12
  • 2011-06-03
相关资源
最近更新 更多