一个ASP.NET页面上有两个表单

8 浏览
0 Comments

一个ASP.NET页面上有两个表单

我有一个带有嵌套主页面的asp.net页面。父主页面有一个类似这样的表单标签:\n

 
... ....

\n而在子主页面中,我有一个侧边栏,其中有另一个表单(没有runat=server),如下所示:\n

.... .... ....

\n但是当我点击提交按钮时,发生了回发,但是javascript函数没有被调用,表单也没有被重定向到子主页面的post url。如果我在没有主页面的独立页面中使用这个表单,它就能正常工作。\n请建议如何强制子主页面内的表单转到post URL?

0
0 Comments

在ASP.NET页面中,出现了一个问题,即在同一页上有两个表单。根据HTML标准,不能嵌套表单。如果这样做,大多数浏览器会忽略内部表单。因此,需要找到解决方法。

解决方法是在主页上创建一个额外的asp:Content,将次要表单放在其中。可以通过主页上的asp:ContentPlaceHolder级联到基本主页上:

这里是主要内容

需要注意的是,次要表单应该位于任何form标签的外部,否则渲染的HTML将包含嵌套的form标签,这正是我们要避免的问题。

但是,如果在子级主页中创建了另一个asp.net contentplaceholder,那么我需要确保这个contentplaceholder不在父级主页的form标签内?还是可以将其放在父级主页的form标签内,然后在子级主页中添加一个form,它仍然可以工作?

答案是,contentplaceholder需要位于form标签的外部,否则渲染的HTML将包含嵌套的form标签,这正是我们要避免的问题。

但是,如果页面的结构是基本主页有一个form,然后是一个ContentPlaceHolder,子级主页通过放置自己的内容来覆盖这个ContentPlaceHolder。我将我的表单放在被子级主页覆盖的ContentPlaceHolder中。

因此,需要创建一个级联的contentplaceholder,以便在子级主页中使用。请参考上述代码,我已经编辑了我的答案并提供了详细的说明。

0
0 Comments

在ASP.NET页面中使用两个表单的问题是由于HTML标准规定不允许嵌套表单,即一个表单内部不能再包含另一个表单。然而,我们可以在母版页中创建另一个内容占位符,将其放在form标签外部,然后在子页面中使用表单。

具体解决方法如下:

在母版页中,添加一个内容占位符(ContentPlaceHolder),将其放在form标签外部,如下所示:

---- ----

在子页面中,将表单添加到上述内容占位符中,如下所示:



通过将表单放置在内容占位符内部,就可以绕过HTML规范中不允许嵌套表单的限制,实现在ASP.NET页面中使用两个表单的需求。

0