当前位置:  开发笔记 > 后端 > 正文

ASP.NET母版页和内容页中的表单元素

如何解决《ASP.NET母版页和内容页中的表单元素》经验,为你挑选了2个好方法。

好的,我当前项目中的另一个路障.

我的主页和内容页面中没有表单元素,我倾向于在相关的内容中包含所有表单.

然而,在当前的项目中,我们有一个他们想要的页面.右上角的登录表单,以及内容中的问题表单.

试图搞定这个,我已经遇到了ASP.NET抱怨在母版页中需要单个表单元素的问题.TBH,我真的不明白为什么这是ASP.NET的要求,但是嘿嘿.

有谁知道我是否/如何让主页和内容页面包含独立工作的表单元素?

如果没有,您能提供有关如何获得所需外观/功能的建议吗?



1> Rob Cooper..:

以为我会回顾一些我未完成的问题,看看我是否可以关闭其中一些问题.

这是一个有趣的.我完全拒绝相信你只能在ASP.NET页面上有一个表单.这对我来说毫无意义.我看到很多网页在网页上有多个表单,为什么ASP.NET页面会有所不同?

所以,它让我思考.

为什么ASP.NET页面需要表单元素?

ASP.NET页面尝试通过PostBack模型提供状态持久性来模拟WinForms环境.这为无状态环境提供了一个状态元素.为此,运行时需要能够在每个"表单"中维护此状态.它通过将数据发布到自身来实现此目的.重要的是要注意:

PostBack没有什么真正的花哨.

它使用HTTP表单和POST,与任何其他表单相同,来自任何其他堆栈.

只是因为看起来它可能正在做一些特别的事情,事实并非如此,所有这一切都发生在POST的后面,其中包含了导致它的原因的一些信息,所以你可以在服务器端代码中处理客户端事件.

那为什么只有一个?

这对我来说是一个百万英镑的问题(我是英国人).我知道ASP.NET需要这个,特别是如果你使用的是ASP.NET服务器控件,但为什么我不能自己创建其他表单呢?

所以,我认为搞砸了,只做自己的形式!

而我做到了.我添加了一个标准的简单形式,其提交操作为"#".然后,它会对当前页面执行POST,并在请求中使用给定表单的表单数据.

你猜怎么着?一切都很好.所以我最终得到了:

一个母版页,其中包含一个HTML表单

此表单回发到当前页面(基本上是使用主页面的页面).

在主页的Page_Load代码隐藏中,我添加了代码来检查请求以查看请求中传递了哪些数据.如果它包含数据(比如隐藏字段),那么我知道帖子来自母版页面上的表格,如果没有,那么它最可能是来自内容的PostBack,可以忽略.

然后我用

标签包围Content 标签.这意味着所有内容页面都自动拥有可以使用的表单.

这为我的问题提供了一个相对简单,干净的解决方案.我的登录表单与创建的所有内容表单一起正常工作,其中一些是复杂的表单,另一些使用大量的服务器控件和许多PostBack,等等.

我希望这有助于其他人.



2> Stephen Wrig..:

表单标签本身在MasterPage中,因此,您可以将任何asp.net服务器控件编码到您希望的母版页上.您可以在母版页的代码隐藏文件上为这些服务器控件编写处理逻辑.

因此,在您的示例中,您可以在母版页的右上角安装登录控件,然后在MASTER PAGE的代码页中使用身份验证逻辑,而不是内容页.

这允许您在每个页面上拥有登录控件,并维护该处理,以及维护内容控件及其在各个页面上的处理.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有