ASP.将变量从.aspx页面传递到UserControl
本文关键字:UserControl 变量 aspx ASP | 更新日期: 2023-09-27 18:08:15
我有一个用户控件,我想从我的。aspx页面传递一个值。我已经在usercontrol中设置了一个属性,将其设置为我需要的页面值,但该值始终为空。
这是我在。aspx页面中的控制代码,
<tcs:SubmitDataDiscrepancy runat="server" ID="SubmitDataDiscrepancy" EntityNameProp='<%# Bind("Association_Name") %>'/>
.ascx代码,
<div style="text-align:right;">
<asp:LinkButton ID="ReportLink" runat="server" Text="Report data discrepancy"></asp:LinkButton>
<asp:Panel ID="ReportPanel" runat="server" CssClass="modalPopup" style="width:auto;">
<div id="PopHeader" style="background-color: black; color: white; height: auto;">
Report discrepancy
<div style="float: right;">
<asp:LinkButton runat="server" ID="AssociationCancelTextButton" CausesValidation="False" Font-Underline="false"
CssClass="glyphicon glyphicon-remove white" ToolTip="Close" />
</div>
</div>
<div style="margin:10px;">
<div>
Submit change request for: <asp:Label ID="EntityName" runat="server" />
</div>
<div>
<textarea id="reportTextArea" runat="server" class="form-control" style="height: 100px; margin-bottom:10px; width: 100%;"></textarea>
<button id="reportSubmitButton" runat="server" class="btn btn-primary" type="submit">Submit</button>
</div>
</div>
和。asx .cs页
public partial class SubmitDataDiscrepancy : System.Web.UI.UserControl
{
public string EntityNameProp { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
EntityName.Text = EntityNameProp;
}
}
为什么我没有得到我期望从。aspx页面的值?
所有变量在页面生命周期结束时被处理,这就是HTTP的无状态特性。你需要一种方法来持久化你的属性。例如,您可以使用ViewState
, Session
或HiddenField
(其他方式)。
在这种情况下,使用Label.Text
:
public partial class SubmitDataDiscrepancy : System.Web.UI.UserControl
{
public string EntityNameProp {
get { return EntityName.Text; }
set{ EntityName.Text = value; }
}
}