asp内联数据绑定不调用方法

时间:2014-11-27 15:00:24

标签: asp.net vb.net

所以在我的页面中我需要一个Asp:DropDownList,只有在查询字符串处于特定状态时才显示。

我的asp文档是这样的

<asp:content ID="content" ContentPlaceHolderID="MainContent" runat="server">

<asp:DropDownList runat="server" 
                  ID="FiscalYearHistoryYearsDropDown"  
                  Visible='<%# Me.IsHistoryPage()%>'>

</asp:DropDownList>

<!-- Some other markup -->

</asp:content> 

我有一个后端方法

Public Function IsHistoryPage() As Boolean

    Dim IsHistory As Boolean = False

    If Me.TransactionStatus = Enumerations.TransactionStatus.Posted Then
        IsHistory = True
    End If

    Return IsHistory

End Function

我在方法中放了一个断点,它永远不会被调用。 我尝试制作内联asp&lt;%=但是没有用。我试过单引号和双引号。但这似乎也没有用。我也尝试了内联IIF()块而不是方法调用。

当我使用&lt;%#时它不会抱怨,它会加载页面。它总是如此。

当我使用&lt;%或&lt;%=时,它会抛出死亡的黄页。

1 个答案:

答案 0 :(得分:0)

<%# %>用于数据绑定上下文。当你想在数据绑定控件中获取一些数据时,通常在某种模板中使用它。尽管DropDownList是一个数据绑定控件,但它没有在一个内部使用,因此%#不是一个选项

<%= %>等同于Response.Write,因此它输出一个普通标记,因此不能用于设置服务器端控件属性。

据我所知,

<% %>在任何地方都没有输出任何内容。

%#%=存在的原因是为了让开发人员能够在代码隐藏和标记之间创建一些交互,以防这种情况发生并非易事。你的情况不同,因为你可以在Page_Load或Page_PreRender中运行它:

FiscalYearHistoryYearsDropDown.Visible = IsHistoryPage()