我从来没有在主页和内容页面都有表单元素,我倾向于在相关内容中填写所有表单。
然而,在当前的项目中,我们有一个他们想要的两个页面。右上角的登录表单和内容中的问题表单。
试图得到这一点,我已经遇到ASP.NET的问题呻吟关于在主页面中单个表单元素的需要。 TBH,我真的不明白为什么这是对ASP.NET的一部分的要求,但嘿嘿。
有人知道/如何/如何让主页和内容页面包含独立工作的表单元素?
如果没有,您能否提供有关如何继续获得所需外观/功能的建议?
解决方法
这是一个有趣的。我完全拒绝相信你只能在ASP.NET页面上有一个表单。对我来说没有任何意义。我看到很多网页在网页上有多个表单,为什么ASP.NET页面有任何不同?
所以,它让我有想法。
为什么ASP.NET页面需要一个表单元素?
ASP.NET页面尝试通过PostBack模型提供状态持久性来模拟WinForms环境。这为无状态环境提供了一个状态元素。为了做到这一点,运行时需要能够在每个“形式”内保持这种状态。它通过将数据发回自身来实现。重要的是要注意:
> PostBack没有什么真正的幻想。
>它使用HTTP表单和POST,与任何其他表单相同,从任何其他堆栈。
只是因为看起来它可能正在做一些特别的事情,它不是,所有这一切都是POST的背后有一些关于什么导致它的信息,所以你可以在服务器端代码中处理客户端事件。
那么为什么只有一个?
这对我来说是一百万英镑的问题(我是英国人)。我明白ASP.NET需要这个,特别是如果你使用ASP.NET服务器控件,但为什么我不能使自己的附加表单?
所以,我以为拧了,只是自己制作!
我做了我添加了一个沼泽标准的简单表单,提交“#”操作。然后,使用请求中给定表单的表单数据对当前页面执行POST。
你猜怎么了?这一切都很好。所以我结束了:
>一个主页,一个HTML表单
>此表单返回到当前页面(基本上使用主页面的页面)。
>在主页的Page_Load代码隐藏中,然后我添加了代码来检查请求以查看请求中传递了哪些数据。如果它包含数据(比如说一个隐藏的字段),那么我知道这个帖子是从主页面上的Form获得的,如果没有,那么最内容是PostBack,而且可以被忽略。
>然后我用< form runat =“server”id =“aspNetForm”...> < / form>标签。这意味着所有内容页面都会自动使用表单。
这为我提供了一个相对简单,干净的解决方案来解决我的问题。我的登录表单与所创建的所有内容表单一起工作,其中一些是复杂的表单,其他的使用大量的服务器控件和许多PostBack等等。
我希望这有助于别人。