服务器端表单标记母版页

时间:2016-12-03 22:34:21

标签: asp.net visual-studio

我想在导航栏上定义一个公共登录部分,该部分保存在母版页上。

我的问题是,asp.net不允许每页有多个标签runat =“server”。如何克服此问题,以便我可以在母版页(用户登录导航栏)和子页面上进行控制?

问题在于位于底部的按钮。我必须用form runat =“server”标签来包围它。但是我已经在子页面最底部的页面中有一个表单标记。

   <ul class="nav navbar-nav navbar-right">
            <li><a href="SignUp.aspx">Sign Up to the Service</a></li>
            <li class="dropdown">
              <a href="#" class="glyphicon glyphicon-user" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> Login<span class="caret"></span></a>
              <ul class="dropdown-menu" id="dropdownlogin">
                <div class="form-group">
                  <label for="usr" class="userlogininfo">Username</label>
                  <input type="text" class="form-control" id="usr"/> 
                </div>
                <div class="form-group">
                  <label for="pwd" class="userlogininfo">Password</label>
                  <input type="password" class="form-control" id="pwd"/>
                </div>
                <li role="separator" class="divider"></li>
                <a class="btn btn-primary btn-block" href="LoggedHome.aspx" role="button">Go</a>

                <asp:Button CssClass="btn btn-primary btn-block" ID="btnLogin" Text="Vai" runat="server" />

              </ul>
            </li>
          </ul>
        </div><!-- /.navbar-collapse -->
      </div><!-- /.container-fluid -->
    </nav>


<form id="form1" runat="server">
<div>
    <asp:ContentPlaceHolder id="body" runat="server">

    </asp:ContentPlaceHolder>
</div>
</form>

由于

2 个答案:

答案 0 :(得分:1)

正如梅森所说,只需将表单runat =“server”标记放在主页中,该主页将包含所有控件, 因此,您可以在主页或子页面内的任何位置添加服务器控件。对照

<form id="form1" runat="server">
   <ul class="nav navbar-nav navbar-right">

             <snip>....</snip>
</ul>
<div>
    <asp:ContentPlaceHolder id="body" runat="server">

    </asp:ContentPlaceHolder>
</div>
</form>

答案 1 :(得分:1)

如果您的设置会在表单中呈现表单,则不允许这样做。

如果可以: 重新设想标记,使表格并排 要么: 如果无法并排执行此操作,请尝试删除登录表单标记。 - 父表单标签将回发到同一页面:如果这是你想要的全部,它可能会发挥作用。

这是@mason建议