如何从asp.net中的label.text调用函数后面的代码

时间:2015-05-18 14:04:47

标签: c# asp.net eval code-behind

我正在尝试从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;
        }

谁能告诉我这里有什么问题。

2 个答案:

答案 0 :(得分:3)

除非您使用基于模板的控件(例如<asp:Repeater><asp:GridView>),否则您无法使用内置代码块,例如您在服务器端控件中使用的内容。

换句话说,您不能在服务器端控件的属性中使用<%=%>块(例如<asp:Label>)。代码将不会运行,您会发现代码实际上是作为呈现的HTML的一部分发送的。例外情况是数据绑定控件允许<%#%>代码块

在这种情况下,你最好在代码隐藏中设置.Text属性。

例如在你的页面加载函数....

protected void Page_Load(object sender, EventArgs e)
{
  if (!Page.IsPostBack)
  {
    pagenumberLabel.Text = GetPagingCaptionString();
  }
}

答案 1 :(得分:0)

如果您向页面添加了一个属性,则可以从您的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;
    };
}