0

これが十分に明確になることを願っています。

私はこれすべてに不慣れです。

私はasp.netとc#プロジェクトを持っており、app_codeにはクラスuserInterface.csがあります。私がする必要があるのは、次のとおりです。

そのクラスでは、特定のページを取得する必要があります

NewPage.aspx

、およびそのページのいくつかのasp要素を変更します。

現在私はこれを持っています:

Page p = (Page)HttpContext.Current.Handler;    

ページを取得するために他に何が必要かわからない。私が欲しいページはNewPage.aspxと呼ばれています。

どんな答えでもいただければ幸いです。

見つけるためにグーグルする何かでさえ素晴らしいでしょう。どこから始めたらいいのかわからない…

4

5 に答える 5

2

App_Codeクラスにメソッドを作成し、コードビハインドの任意のイベントからこのメソッドを呼び出すことができます。GridViewまたは完全なページをこのメソッドに渡すことができます。

これは、コードビハインドファイルにあるPage_Loadイベントです。

protected void Page_Load(object sender, EventArgs e)
{
    UserInterface.UpdateGrid(ref GridView1);
}

これは、.csファイルにある静的メソッドです。

public static void UpdateGrid(ref GridView view)
{
    // update your GridView here
}
于 2011-08-23T11:18:02.217 に答える
1

Webサイト内ではこれを行うことはできないと思いますが、App_Codeファイル内にメソッドを作成して、ページから呼び出し、このメソッドに制御を渡してそこからアクセスできるようにすることはできます。

アップデート

私はあなたのApp_Codeファイル

using System.Web.UI.WebControls;

public static void AddColumn(ref GridView gv)
    {
        BoundField field1=new BoundField();
        field1.HeaderText="Header Text";
        field1.DataField = "DataFieldName";
        gv.Columns.Add(field1);


        BoundField  field2 = new BoundField();
        field2.HeaderText = "Header Text";
        field2.DataField = "DataFieldName";
        gv.Columns.Add(field2);
    }

あなたのページで

Test.AddColumn(ref MyGridView);
MyGridView.DataSource = names;// assign your datasource here
MyGridView.DataBind();
于 2011-08-23T10:48:45.833 に答える
0

App_Codeクラスから.aspxページにアクセスしようとしている場合は、コードに問題があります。あなたはこれをすることになっていない。App_Codeのクラスは、.aspxページを提供するためのものであり、逆にするためのものではありません。たとえば、App_Codeではユーティリティクラスを保持しています。

于 2011-08-23T11:08:40.517 に答える
0

HttpContextを介してページにアクセスできる場合がありますが、それはおそらく適切なアプローチではありません。他の投稿者が指摘しているように、メソッドを使用して、コントロールへの参照を渡すだけです。

ただし、質問に答えるには、次のような方法を試すことができます。

if (HttpContext.Current.Handler is Page)
{
    Page currentPage = (Page)HttpContext.Current.Handler;
    if (currentPage != null)
    {
        //depending on where the control is located, you may need to use recursion
        GridView gridView = currentPage.FindControl("GridView1");
    }
}

繰り返しになりますが、これは無数の理由から、おそらく良いアプローチではありません。私は誰かにあなたの実際の質問に答えてもらいたかったので、それはあります。

于 2011-08-23T18:57:14.967 に答える
0

コンテンツページ(.aspx)がマスターページの下にバインドされている場合。コンテンツページ内でコントロールの親コントロールを見つけることを検討する必要があります。たとえば、マスターページにコンテンツプレースホルダーが含まれていて、そのホルダー内でページをバインドしている場合、最初にコンテンツプレースホルダーを見つける必要があります。

Page p = HttpContext.Current.Handler as Page;
Label lbl = p.Form.FindControl("ContentPlaceHolder1").FindControl("UpdatePanel1").FindControl("lblTest") as Label

応答要求をコンパイルしている間、ASP.Netは常にマスターページファイル(存在する場合)を調べてコンテンツページに到達します。したがって、クラスから.aspxファイルの下でページコントロールを要求するときは、最初にマスターページ内で親コントロールを見つける必要があります。

于 2016-07-27T15:29:30.677 に答える