0

我在 asp.net 中编写一个 web 应用程序我有一个母版页,其中包含一个 ContentPlaceHolder 和一个包装 ContentPlaceHolder 的表单,在一个 aspx 页面中,我实现了 ContentPlaceHolder 并在此页面中有一些控件。

现在,当我尝试使用 Request.Form.Get("my control name") (来自代码后面的 aspx)时,我得到空值。如果我尝试在 aspx 页面中添加一个表单,我会收到一个错误,提示您在一个页面中只能有一个表单。

如何获取控件中的值?

谢谢您的帮助。

4

2 回答 2

1

Request.Form("YourControlName")不适用于服务器控件,因为 ASP.NET 在将控件输出到页面时会在控件名称中添加一些额外的内容。它这样做是为了确保该名称在页面上的所有控件中保持唯一。因此,例如,您的控件在页面上创建时可能实际上被命名为“ctl00_maincontent_placeholder1_YourControlName”。

在 ASP.NET 中,这通常不是问题,因为您通常不使用 Request.Forms 来获取控件值。相反,您使用服务器控件的方法来获取值。因此,对于文本框,您将使用YourControlName.Text来获取输入到文本框中的值。

于 2012-01-28T13:29:41.200 回答
0

如果您只是想在母版和页面之间传递一个值,假设该值在母版上,您可以将 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;
于 2012-01-28T10:16:29.690 回答