2009-11-02 50 views
4

在每一页(坐在主人)我有登录领域。ASP.Net多于1个表格?

在其他页面中,我有不同的控件,例如一个联系公式。

如何设置多个<form> -tag?

回答

3

不幸的是,对于ASPNET表单,您只能有一个FORM标记和runat="server"属性。

但是,如果排除runat="server"属性(只要它们不是嵌套在另一个中),则可以根据需要制作尽可能多的FORM标签。

在你的母版,例如,你可以有在页面顶部的登录表单,并遂把形式runat="server"略低:

<form action="login" method="post"> 
    <input type="text" name="username" /> 
    <input type="password" name="password" /> 
    <input type="submit" value="Login" /> 
</form> 

<form runat="server"> 
    ... place server controls here ... 
</form> 
1

说不上用Asp.net的网页表单完成(你可以有很多表单,但只有一个应该有一个runat =“服务器”,这是不切实际的),但你可以轻松地用Asp.net MVC完成它

1

您可以使用验证组将窗体拆分为多个逻辑窗体,以便您可以在按钮的Click事件处理程序中调用验证。这实际上是所有你需要ASP.Net中的多种形式,除非你试图避免在回发中发布所有表单域的数据。

尝试以下操作Page样品:

<%@ Page Language="C#" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <script runat="server"> 
     protected void btnSendMessage_Click(object sender, EventArgs e) 
     { 
      Page.Validate("contact"); 

      if (!Page.IsValid) 
       return; 
     } 

     protected void btnLogin_Click(object sender, EventArgs e) 
     { 
      Page.Validate("login"); 

      if (!Page.IsValid) 
       return; 
     } 
    </script> 
    <table> 
     <tr> 
      <td> 
       <asp:Label ID="lblUsername" AssociatedControlID="txtName" runat="server">Username:</asp:Label> 
      </td> 
      <td> 
       <asp:TextBox ID="txtName" ValidationGroup="login" runat="server" /> 
       <asp:RequiredFieldValidator ID="reqName" ControlToValidate="txtName" Display="Dynamic" ErrorMessage="You must supply a username" 
        ValidationGroup="login" runat="server" /> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <asp:Label ID="lblPassword" AssociatedControlID="txtPassword" runat="server">Password:</asp:Label> 
      </td> 
      <td> 
       <asp:TextBox ID="txtPassword" ValidationGroup="login" runat="server" /> 
       <asp:RequiredFieldValidator ID="reqPassword" ControlToValidate="txtPassword" Display="Dynamic" ErrorMessage="You must supply a password" 
        ValidationGroup="login" runat="server" /> 
      </td> 
     </tr> 
     <tr> 
      <td colspan="2"> 
       <asp:Button ID="btnLogin" Text="Login" ValidationGroup="login" OnClick="btnLogin_Click" runat="server" /> 
      </td> 
     </tr> 
    </table> 
    <hr /> 

    <h1>Contact</h1> 

    <table> 
     <tr> 
      <td> 
       <asp:Label ID="lblYourName" AssociatedControlID="txtYourName" runat="server">Your name:</asp:Label> 
      </td> 
      <td> 
       <asp:TextBox ID="txtYourName" runat="server" ValidationGroup="contact" /> 
       <asp:RequiredFieldValidator ID="reqYourName" ControlToValidate="txtYourName" Display="Dynamic" ErrorMessage="Tell us your name!" 
        ValidationGroup="contact" runat="server" /> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <asp:Label ID="lblYourEmail" AssociatedControlID="txtYourEmail" runat="server">Your email:</asp:Label> 
      </td> 
      <td> 
       <asp:TextBox ID="txtYourEmail" runat="server" ValidationGroup="contact" /> 
       <asp:RequiredFieldValidator ID="reqEmail" ControlToValidate="txtYourEmail" Display="Dynamic" ErrorMessage="Tell us your email!" 
        ValidationGroup="contact" runat="server" /> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <asp:Label ID="lblMessage" AssociatedControlID="txtMessage" runat="server">Your message:</asp:Label> 
      </td> 
      <td> 
       <asp:TextBox ID="txtMessage" TextMode="MultiLine" runat="server" ValidationGroup="contact" /> 
       <asp:RequiredFieldValidator ID="reqMessage" ControlToValidate="txtMessage" Display="Dynamic" ErrorMessage="We need you to send us a message!" 
        ValidationGroup="contact" runat="server" /> 
      </td> 
     </tr> 
     <tr> 
      <td colspan="2"> 
       <asp:Button ID="btnSendMessage" ValidationGroup="contact" Text="Contact" OnClick="btnSendMessage_Click" runat="server" /> 
      </td> 
     </tr>   
    </table> 
    </form> 
</body> 
</html> 

在这里你会得到验证,它表现为两个不同的形式,虽然从两个“形式”的数据将被调回。

这是在页面上执行多个操作的标准范例,并且自ASP.Net 2 :)以来一直存在。

请原谅使用内联代码,我认为这会让示例更容易遵循。