C# 如何在ascx页面中声明隐藏字段,以便从aspx中的隐藏字段中获取值?

C# 如何在ascx页面中声明隐藏字段,以便从aspx中的隐藏字段中获取值?,c#,asp.net,C#,Asp.net,目标:在ascx页面中从我的aspx页面读取隐藏字段值 问题:我是ASP新手,我不知道如何做到这一点。我可以在aspx页面中设置隐藏字段的值,但如何在ascx页面中读取该值?我使用的代码如下 第1.aspx页 <%@ Register Src="~/UserControl/Page2.ascx" TagName="Info" TagPrefix="uc" %> <asp:HiddenField ID="hdnfldInfo" runat="server" /> 第2.a

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

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

第1.aspx页

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

HiddenField Info = (HiddenField)this.Info.FindControl("hdnfldIncDesc");
上面Page2.ascx上的代码没有相同的值。我遗漏了什么或做得不对


提前感谢您的任何评论、建议或建议

您需要在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新手。以后会有回报的

看看: gernal中关于创建用户控件的好文章:(跳到向用户控件部分添加自定义属性和方法以了解相关问题)


还有一个ok示例

您需要在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新手。以后会有回报的

看看: gernal中关于创建用户控件的好文章:(跳到向用户控件部分添加自定义属性和方法以了解相关问题)


并且有一个ok示例

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

// usercontrol:

public string MyProperty {get; set;}

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

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

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

// usercontrol:

public string MyProperty {get; set;}

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

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

ascx控件对我们可以使用的页面具有引用

this.Page
现在我们需要从该页面获取一个控件。因为我们知道它的名字,所以可以使用FindControl

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

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

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

this.Page
现在我们需要从该页面获取一个控件。因为我们知道它的名字,所以可以使用FindControl

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

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

使用this.Parent.FindControl(HiddenBankAccountId)使用this.Parent.FindControl(HiddenBankAccountId)

在页面流中的何处执行此分配?是吗?负载其他地方?虽然您可以从用户控件访问父页,但不应依赖于此,因为您不能保证父页将具有隐藏字段。这使得用户控制非常有限,而且不是最好的practice@ebyrob-你想在哪里就在哪里。你会在页面流中的哪里做这个作业?初始化?负载其他地方?虽然您可以从用户控件访问父页,但不应依赖于此,因为您不能保证父页将具有隐藏字段。这使得用户控制非常有限,而且不是最好的practice@ebyrob-无论您喜欢哪里。您不能保证父页面将有一个隐藏字段。这使得用户控件非常有限,而且这不是最佳做法。您不能保证父页面将有一个隐藏字段。这使得用户控件非常有限,这不是最佳实践为什么将myusercontrol对象强制转换为myusercontrol?不需要这样做。@Ahmedilyas good call更新了示例。但对于记录来说,这只是一个粗略的例子来说明这个想法。为什么要将myusercontrol对象强制转换为myusercontrol?不需要这样做。@Ahmedilyas good call更新了示例。但对于记录来说,这只是一个粗略的例子来说明这个想法;实际上,我最终解决了这个问题,将以下内容添加到page2 HiddenField Info=Parent.Findcontrol(“hdnfldInfo”)中作为HiddenField;