1

我想在同一页面中插入登录表单和注册表单。我尝试执行以下操作:

..
<body>
<form runat="server">
..
    <div id="login">
        some inputs and validations
        <asp:button .. />
    </div>
..
    <div id="register">
        some inputs and validations
        <asp:button .. />
    </div>
..
</form>
</body>

如您所知,form标签将整个代码包装在正文中(WebForms 的概念)。每个“表单”(登录和注册)都包括验证(客户端和服务器端)。当然,当我单击任何按钮时,它会发送两个“表单”,但不会在验证控件验证所有字段(在两个表单中)之前发送。

我的目标是将它们绝对分开。我想过不要用form标签包装所有代码并为每个表单包含两个form标签,但我猜它打破了“规则”和 WebForms 的概念。此外,据我了解,我不能将两种形式包含在runat=server. 在这种情况下我能做什么?

4

2 回答 2

1

不要试图在一个页面上有两个表单,只需忘记表单标签是一个表单,它只是 asp.net webforms 中的一个容器。

将您的登录“表格”放在页面上,并将您的注册“表格”放在页面上。没关系,他们会互相忽略,你只需要使用ValidationGroup财产。为登录位设置一个验证组,为注册位设置另一个。此外,如果您想进一步将它们分开,您可以将它们放入<asp:Panel>容器中,这样您就可以设置DefaultButton参数,因此当您按下回车键时,它会提交正确的“表单”。

当我第一次开始使用 asp.net 时,我一直在想如果我需要做什么……或者……但它没有出现。您只是将它们视为同一表面上的两个对象。

因为 webforms 系统在回发之间维护状态,所以您可以像使用桌面应用程序一样处理它们。

说了这么多,听起来您可能才刚刚开始,如果您有选择,那么请使用 MVC 而不是 WebForms。

于 2013-07-23T19:39:49.950 回答
1

基本上你正在与验证作斗争。向要验证的控件和按钮添加验证组,如下所示:

<div id="login">
    <asp:TextBox ValidationGroup="Login" ... />
    <asp:Button ValidationGroup="Login" ... />
</div>

当然,也ValidationGroup需要为register表单确定 a。

于 2013-07-23T19:40:14.507 回答