无法从使用 ContentPlaceHolder 包装的 aspx 页面获取 Request.Form.Get 值(表单错误)

发布于 2024-12-29 11:27:02 字数 301 浏览 1 评论 0原文

我正在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

沦落红尘 2025-01-05 11:27:02

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.

小霸王臭丫头 2025-01-05 11:27:02

如果您只是尝试在母版和页面之间传递值,假设该值位于母版上,您可以将 Page.Master 转换为正确的类型。在母版页上,您可以将控件包装在母版上。

母版页

public string MyControlText
{
    get
    {
        return myControl.Text;
    }
    set
    {
        myControl.Text = value;
    }
}

在页面上

((MyMasterPage)this.Page.Master).MyControlText = "To master from page";

string fromMasterToPage = ((MyMasterPage)this.Page.Master).MyControlText;

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

public string MyControlText
{
    get
    {
        return myControl.Text;
    }
    set
    {
        myControl.Text = value;
    }
}

On the page

((MyMasterPage)this.Page.Master).MyControlText = "To master from page";

string fromMasterToPage = ((MyMasterPage)this.Page.Master).MyControlText;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文