0

私はasp.netでWebアプリを書いています.ContentPlaceHolderを含むマスターページとContentPlaceHolderをラッパーするフォームがあります.aspxページではContentPlaceHolderを認識し、このページにいくつかのコントロールがあります.

Request.Form.Get("my control name") (コードの背後にある aspx から) を使用しようとすると、null になります。aspx ページにフォームを追加しようとすると、ページにフォームを 1 つしか持てないというエラーが表示されます。

コントロールの値を取得するにはどうすればよいですか??

助けてくれてありがとう。

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 に答える