1

目标:在 ascx 页面中从我的 aspx 页面中读取隐藏字段值

问题:我是 ASP 新手,不知道如何完成。我可以在 asx 页面中设置隐藏字段的值,但是如何在 ascx 页面中读取该值?我正在使用的代码如下

第1页.aspx

<%@ Register Src="~/UserControl/Page2.ascx" TagName="Info" TagPrefix="uc" %>
<asp:HiddenField ID="hdnfldInfo" runat="server" />

Page1.aspx.cs

String strInfo = Convert.ToString(e.CommandArgument);
hdnfldInfo.Value = strInfo;

Page2.ascx

HiddenField Info = (HiddenField)this.Info.FindControl("hdnfldIncDesc");

Page2.ascx 上面的代码没有相同的值。我错过了什么或做错了什么?

提前感谢您的任何意见、建议或建议

4

4 回答 4

3

您需要在 ascx(也称为用户控件)上创建一个属性,并让 aspx 页面根据隐藏字段设置属性

让你的 ascx 代码像这样:

public class MyUserControl : UserControl{
     public String MyProperty {get;set;}

     //...do stuff with myProperty

}

然后在aspx页面代码后面

public class MyPage : Page{
     protected void Page_Load(){
      HiddenField info = (HiddenField)myHiddenField;
      MyUserControl control = myusercontrol;
      control.MyProperty = info.Value;
     }

}

您可能需要更改设置属性的页面生命周期的哪一部分。

由于您是 asp.net 的新手,因此我还会查看一些有关创建用户控件的文章。它会在以后得到回报。

看一下:关于创建用户控件的好文章:http: //msdn.microsoft.com/en-us/library/3457w616 (v=vs.100).aspx (跳到添加自定义属性和方法到相关问题的用户控制部分)

并将自定义参数发送到用户控件 ascx有一个好的示例

于 2013-10-11T16:43:48.503 回答
2

除了通过进入后面的设计器代码使该隐藏字段公开且不受保护(默认情况下)之外,您还需要从用户控件访问父页面。最佳实践是在父级设置它的用户控件中创建一个属性,然后用户控件将使用相关属性在页面上显示它。

// usercontrol:

public string MyProperty {get; set;}

// ASPX page:
this.ucMyUserControl.MyProperty = this.hdnfldInfo.Value;

然后在您的用户控件中,在您认为合适的任何地方使用“MyProperty”。

于 2013-10-11T16:44:15.513 回答
2

ascx 控件有一个对我们可以使用的页面的引用。

this.Page

现在我们需要从那个页面获取一个控件。由于我们知道它的名称,您可以使用 FindControl

HiddenField Info = this.Page.FindControl("hdnfldIncDesc");

请注意,如果找不到具有该名称的控件,这将返回 null。所以相应地编码。

于 2013-10-11T16:45:10.083 回答
0

Use this.Parent.FindControl(HiddenBankAccountId)

于 2014-08-22T09:55:09.567 回答