我正在尝试清理工作中的旧ASP.NET应用程序......
我有一个名为FailedBatchPanel.ascx
的父UserControl定义如下:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="FailedBatchPanel.ascx.cs" Inherits="Controls_FailedBatchPanel" %>
<%@ Register TagPrefix="dashboard" TagName="FailedBatch" Src="~/Controls/FailedBatchControl.ascx" %>
<%@ Import Namespace="System" %>
<div class="panel panel-default" id="failedBatchesPanel">
<div class="panel-heading">
<h4 class="panel-title">
<a class="accordion-toggle" data-toggle="collapse"
<data-parent="#<%=ParentId %>" href="#<%=PanelId %>">
<%=Title %>
</a>
</h4>
</div>
</div>
<div id="<%=PanelId %>" class="panel-collapse collapse">
<div class="panel-body">
<dashboard:FailedBatch runat="server"
ID="failedClaims"
BatchType='<%$ Code: BatchType %>'/>
</div>
</div>
子控件是FailedBatch.ascx
,只包含一个带数据绑定的asp:Repeater。
父控件FailedBatchPanel的调用如下:
<dashboard:FailedBatchPanel runat="server"
Title="SomeTitle"
ParentId="categories"
PanelId="collapseOne"
BatchType="goober"/>
我想将如上所述声明性地定义的BatchType传递给嵌入FailedBatchPanel的子控件。
从上面的示例中可以看出,我尝试使用`&lt;%$ Code:...%&gt;由InfinitiesLoop在http://weblogs.asp.net/infinitiesloop/archive/2006/08/09/The-CodeExpressionBuilder.aspx
定义的CodeExpressionBuilder在我尝试的每种情况下,FailedBatch中定义的BatchType公共属性在Page_Load
时始终为null我试过了:
BatchType="<%# BatchType %>"
- 得到Null BatchType='<%# BatchType %>'
- 得到Null BatchType="<%= BatchType %>"
- 在这种情况下,我得到了文字“&lt;%= BatchType%&gt;”而不是null 我很难过,需要帮助。有什么想法吗?
答案 0 :(得分:0)
通过使用DataBind语法,我们可以得到结果。
BatchType='<%# BatchType %>'
然而,正如你所说,这没有任何回报。您需要包含将控件告诉数据绑定的代码,以便评估BatchType
:
<% failedClaims.DataBind%>
这可以放在父用户控件中的任何位置。