无法从使用 ContentPlaceHolder 包装的 aspx 页面获取 Request.Form.Get 值(表单错误)
我正在 asp.net 中编写一个 Web 应用程序,我有一个包含 ContentPlaceHolder 的母版页 以及包装 ContentPlaceHolder 的表单,在 aspx 页面中,我实现了 ContentPlaceHolder 并在该页面中有一些控件。
现在,当我尝试使用 Request.Form.Get("my control name") (来自代码后面的 aspx)时,我得到 null。 如果我尝试在 aspx 页面中添加表单,则会收到一条错误消息,指出页面中只能有一个表单。
我如何获取控件中的值?
感谢您的帮助。
I am writing a web app in asp.net I have a master page that contain a ContentPlaceHolder
and a form that wrapper the ContentPlaceHolder, In a aspx page I realize the ContentPlaceHolder and have some controls in this page.
Now when I Trying to use Request.Form.Get("my control name") (from the aspx behind code), I get null.
If I try to add a form in the aspx page I get an error that say you can have only one form in a page.
How can i get the values in my controls??
thanks for the help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Request.Form("YourControlName")
不适用于服务器控件,因为 ASP.NET 在将控件输出到页面时会在控件名称中添加一些额外的内容。这样做是为了确保该名称在页面上的所有控件中保持唯一。因此,例如,当您的控件在页面上创建时,它实际上可能被命名为“ctl00_maincontent_placeholder1_YourControlName”。在 ASP.NET 中,这通常不是问题,因为您通常不使用 Request.Forms 来获取控件值。相反,您可以使用服务器控件的方法来获取值。因此,对于文本框,您可以使用
YourControlName.Text
来获取输入到文本框中的值。Request.Form("YourControlName")
will not work with server controls because ASP.NET adds some extra stuff to the name of your control when it outputs it to the page. It does this to make sure that the name remains unique across all the controls on the page. So, for example, your control might actually be named something like "ctl00_maincontent_placeholder1_YourControlName" when it gets created on the page.In ASP.NET this is not usually a problem because you typically do NOT use Request.Forms to get your control values. Instead you use the server control's methods to get the values. So, for a textbox, you would use
YourControlName.Text
to get the value that was entered into the textbox.如果您只是尝试在母版和页面之间传递值,假设该值位于母版上,您可以将 Page.Master 转换为正确的类型。在母版页上,您可以将控件包装在母版上。
母版页
在页面上
If you are just trying to communicate a value between the master and page, assuming the value is on the master you can cast Page.Master to the correct type. On the master page you can wrap controls on the master.
MasterPage
On the page