2010-05-28 105 views
1

我遇到下面的问题。 我有一个ASPX页面,没有数据绑定和语法如下:Asp.net:使用的<%#或<%

<asp:label runat=server.... text='<%# MyFunction("parameter") %>' /> 

MyFunction的声明如下:

protected function MyFunction(par as string) as string 
    if par = "1" then 
    MyFunction="something" 
    else 

    end if 
end function 

但ASP.NET不评价MyFunction的。

什么就是我的问题呢?

回答

2

<%#用于数据绑定表达式。通常你会看到<%# Eval("FieldName") %>。如果你想打电话给你定义的方法代码隐藏,你应该使用<%= MyFunction("param") %>

这就是说...你应该考虑不同的方法。这将是更好的(使用现有的例子)做一些事情如下:

<asp:label name="MyLabel" runat="server" /> 

与您的代码隐藏下面一起:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load 
    MyLabel.Text = MyFunction("param") 
End Sub 

Protected Function MyFunction(par as string) as string 
    if par = "1" then 
    MyFunction="something" 
    else 

    end if 
End Function 

这种方法可以确保您的UI声明一无所知在代码隐藏方法中定义的方法,增加了系统的整体可维护性。

+0

嗯..这是行不通的。在HTML中,它返回字符串<%= MyFunction的(“参数”)%> – stighy 2010-05-28 20:31:53

+0

@stighy:那是因为我没有在第一次发现它的标签的声明中。它永远不会那样工作。您必须使用我在编辑中列出的方法。 – Randolpho 2010-05-28 20:33:15

+0

好吧,我解决了..如果我在控件(标签,文字)内使用<%= ...%>,它会返回字符串。但是,如果单独使用它,而不是“绑定”控件的文本属性,它就可以工作。 Thorks Randolpho! – stighy 2010-05-28 20:36:52