2012-01-28 34 views
0

我正在写一个web应用程序在asp.net我有一个母版页包含一个ContentPlaceHolder 和一个窗体包装ContentPlaceHolder在aspx页面中,我实现了ContentPlaceHolder并在此页面中有一些控件。无法从aspx页面获取Request.Form.Get valus ContentPlaceHolder(表单错误)

现在,当我试图使用Request.Form.Get(“我的控制名称”)(从aspx后面的代码),我得到空。 如果我尝试在aspx页面中添加一个表单,我会收到一个错误消息,说您只能在页面中有一个表单。

我怎样才能得到我的控制值?

感谢您的帮助。

+0

什么是form标签中的方法,如method = post? – Saurabh 2012-01-28 10:03:58

回答

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; 
1

Request.Form("YourControlName")因为ASP.NET增加了一些额外的东西给你的控制,当它输出到页面的名称不能与服务器控件工作。它这样做是为了确保名称在页面上的所有控件中保持唯一。因此,例如,当您的控件在页面上创建时,实际上可能会命名为“ctl00_maincontent_placeholder1_YourControlName”。

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