如何从 asp.net 中的 label.text 调用代码隐藏函数
How to call code behind function from label.text in asp.net
我正在尝试从 Label.Text 调用代码隐藏中定义的函数,但它不起作用。这是代码...
.aspx 文件中的代码
<asp:Label runat="server" Text='<%# GetPagingCaptionString() %>' ID="pagenumberLabel"></asp:Label>
来自代码隐藏的代码块
public string GetPagingCaptionString()
{
int currentPageNumber = Convert.ToInt32(txtHidden.Value);
int searchOrderIndex;
if (int.TryParse(Convert.ToString(Session["searchOrderIndex"]), out searchOrderIndex))
{
return string.Format("{0} to {1} orders out of {2}", (currentPageNumber * 20) + 1,
(currentPageNumber + 1) + 20, GetItemsCount(searchOrderIndex.ToString()));
}
return String.Empty;
}
谁能告诉我这里出了什么问题。
如果您将 属性 添加到您的页面,它将可以从您的 aspx 访问,如下所示:
<asp:Label runat="server" Text='<%= PagingCaptionString %>' ID="pagenumberLabel" />
NB <%= %>
标签而不是用于数据绑定控件的 <%# %>
代码隐藏:
public string PagingCaptionString {
get {
int currentPageNumber = Convert.ToInt32(txtHidden.Value);
int searchOrderIndex;
if (int.TryParse(Convert.ToString(Session["searchOrderIndex"]), out searchOrderIndex))
{
return string.Format("{0} to {1} orders out of {2}", (currentPageNumber * 20) + 1,
(currentPageNumber + 1) + 20, GetItemsCount(searchOrderIndex.ToString()));
}
return String.Empty;
};
}
除非您使用基于模板的控件(例如 <asp:Repeater>
或 <asp:GridView>
),否则您不能使用服务器端控件中的内联代码块。
换句话说,您不能在服务器端控件(例如<asp:Label>
)的属性中包含<%=%>
块。代码不会是 运行,您会发现代码实际上是作为呈现的 HTML 的一部分发送的。数据绑定控件例外,其中 <%#%>
代码块 是 允许的。
在这种情况下,最好在代码隐藏本身中设置 .Text
属性。
例如在您的页面加载功能中....
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
pagenumberLabel.Text = GetPagingCaptionString();
}
}
我正在尝试从 Label.Text 调用代码隐藏中定义的函数,但它不起作用。这是代码... .aspx 文件中的代码
<asp:Label runat="server" Text='<%# GetPagingCaptionString() %>' ID="pagenumberLabel"></asp:Label>
来自代码隐藏的代码块
public string GetPagingCaptionString()
{
int currentPageNumber = Convert.ToInt32(txtHidden.Value);
int searchOrderIndex;
if (int.TryParse(Convert.ToString(Session["searchOrderIndex"]), out searchOrderIndex))
{
return string.Format("{0} to {1} orders out of {2}", (currentPageNumber * 20) + 1,
(currentPageNumber + 1) + 20, GetItemsCount(searchOrderIndex.ToString()));
}
return String.Empty;
}
谁能告诉我这里出了什么问题。
如果您将 属性 添加到您的页面,它将可以从您的 aspx 访问,如下所示:
<asp:Label runat="server" Text='<%= PagingCaptionString %>' ID="pagenumberLabel" />
NB <%= %>
标签而不是用于数据绑定控件的 <%# %>
代码隐藏:
public string PagingCaptionString {
get {
int currentPageNumber = Convert.ToInt32(txtHidden.Value);
int searchOrderIndex;
if (int.TryParse(Convert.ToString(Session["searchOrderIndex"]), out searchOrderIndex))
{
return string.Format("{0} to {1} orders out of {2}", (currentPageNumber * 20) + 1,
(currentPageNumber + 1) + 20, GetItemsCount(searchOrderIndex.ToString()));
}
return String.Empty;
};
}
除非您使用基于模板的控件(例如 <asp:Repeater>
或 <asp:GridView>
),否则您不能使用服务器端控件中的内联代码块。
换句话说,您不能在服务器端控件(例如<asp:Label>
)的属性中包含<%=%>
块。代码不会是 运行,您会发现代码实际上是作为呈现的 HTML 的一部分发送的。数据绑定控件例外,其中 <%#%>
代码块 是 允许的。
在这种情况下,最好在代码隐藏本身中设置 .Text
属性。
例如在您的页面加载功能中....
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
pagenumberLabel.Text = GetPagingCaptionString();
}
}