【问题标题】:C# ASP.NET Master Page and ChildPage - Assign strings from Child Page into Master PageC# ASP.NET 母版页和 ChildPage - 将字符串从子页分配到母版页
【发布时间】:2013-01-04 02:34:02
【问题描述】:

这是我的子页面文件和我的母版页面文件的部分。我要将 strName 从子页面传递到母版页。我想在子页面中访问此母版页变量,并将子页变量分配给页面加载上或之前的母版页。我经常得到最后选择的值而不是当前值

例如,鉴于记录显示 Mary、John、Peter,

如果我点击 Mary ,则显示 none 如果我点击彼得,显示玛丽 如果我舔约翰,请给彼得看

您能否建议并说明如何解决此问题?

以下是我的代码

   protected void grdNameSelection_ItemCommand(object sender, GridCommandEventArgs e) 
    {
        RadGrid CurrentGrid = (RadGrid)sender;
        GridData GridSource = PageSource.GrdSrcNameSelection;
        String a = GridSource.state.ToString();

        if (e.CommandName == "SelectCurrent")
        {
            foreach (GridDataItem item in CurrentGrid.SelectedItems)
            {

                RowData row = (RowData)GridSource.Current[item.DataSetIndex];
                string Name = row.Name;
            }
        }
    }
 protected void grdCompanySelection_PreRender(object sender, EventArgs e)
    {
        UserSession.Instance.CurrentName= Name ;

        RadGrid CurrentGrid = (RadGrid)sender;
        GridData GridSource = PageSource.GrdSrcCompanySelection;
        CommandButtonDisplay(GridSource, CurrentGrid);

    }

母版页

 protected void Page_init(object sender, EventArgs e)
    {

    }
    protected void Page_Load(object sender, EventArgs e)
    {
        lblHeader.Text = UserSession.Instance.CurrentName;

        if (!Page.IsPostBack)
        {  ,,,,

【问题讨论】:

    标签: c# asp.net inheritance master-pages radgrid


    【解决方案1】:

    不幸的是,MS 没有提供很好的方法来做到这一点。你基本上有两种选择。

    1. 从子页面访问控件,然后设置您需要的任何值(在示例中子页面为this):

      Label label1 = this.Master.FindControl("Label1") as Label;
      label1.Text = "Hello";
      
    2. 首选在母版页上提供某种设置器。这是“更安全”的,因为子页面不直接操作主页面的控件。

       MyType master = this.Master as MyType;
       if(master == null)
          return;
      
       master.MyProperty = "something";
      
       // In master page
       public string MyProperty
       {
          get { return label.Text; }
          set { label.Text = value; }
       }
      

    【讨论】:

    • 非常感谢。第二个答案似乎是最好的答案
    • 为母版页创建实例的重要性是什么?
    • 不确定你的意思——可能应该是一个单独的问题。母版页允许使用“模板”并减少代码重复。您必须将 Master 属性转换为您的类型才能访问您定义的自定义方法/属性(将它们公开)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多