4
A
回答
1
有一种方法通过使用自定义HtmlForm类来切换窗体,该类可以使窗体标记呈现开启和关闭。我拿出关于如何使用这个贝宝和周围的ASP.NET单一形式的标签问题得到一个博客帖子:
http://www.codersbarn.com/post/2008/03/08/Solution-to-ASPNET-Form-PayPal-Problem.aspx
希望这有助于:-)
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>
5
ASP.NET Web窗体都是围绕这一理念建立仅限1-形式。为了解决这个问题,你就需要使用两种不同的风味(一拉MVC)或看看这篇文章,如何解决它在Web窗体:
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 :)以来一直存在。
请原谅使用内联代码,我认为这会让示例更容易遵循。
相关问题
- 1. 与多个表格中的一个表格进行1对1的关系
- 2. 在MVC中,1个模型1个表格或1个模型几个表格?
- 3. 在asp.net中显示多个表格
- 4. 1个表格宽度与其他多个其他表格在LibGDX下相同
- 5. 用于ASP.NET的表格网格控件
- 6. 基于1行输入生成多行数据 - Google表格
- 7. 将FixedColumns应用于多个表格
- 8. 多个一对多1个表greenDAO
- 9. 多个价格1个项目
- 10. 2表格(select) - 1依赖于2
- 11. 查询多个表格 - 返回1个匹配
- 12. 每个桶多于1个reducer
- 13. div忽略起始位和多于1个空格
- 14. 在MySQL中查询多于2个包含1个键的表?
- 15. Google表格大于1 TB的MySQL表格Sql文件
- 16. 1个IDREF和多于1个JAXB不一致之处
- 17. Vector pop_back()删除多于1个条目
- 18. ArrayList为循环删除多于1个?
- 19. C++,如何获得多于1个元素的列表
- 20. 数据透视表为同一个ID返回多于1行
- 21. 基于多个表
- 22. 创建ASP.Net DataBound控件,呈现具有多个表格的表格
- 23. SQL从多个表格创建表格
- 24. Web2py - 多个表格只读表格
- 25. HTML/ASP.NET中的CSS多列表格
- 26. 从多个表格中查询多个表格中的条件
- 27. 如果句子中有多于1个空格,我如何将句子中的空格数减少为1?
- 28. 2个表格,1页 - WebMatrix/Razor
- 29. 查询从N:1表格到一个
- 30. 从1表格中插入2表格