使用支持双向绑定的ITemplate字段创建DataBound UserControl,即<%#Bind()%>

时间:2012-05-10 07:00:50

标签: asp.net data-binding user-controls formview itemplate

仅仅是我还是双向数据绑定的材料严重不足?

无论如何,我的问题是,我创建了一个UserControl,放在FormView.InsertItemTemplate中。

我的UserControl本身有一个ITemplate字段。基本上这个想法是,在我的形式中,我有5个控件,这些控件对所有表单都是通用的,另一个部分可以根据表单进行自定义。

我的标记看起来像这样:

<irt:FormView ID="FormViewInsertEvent" DefaultMode="Insert" runat="server"
    DataKeyNames="EVENT_ID" DataSourceID="DataSourceEvents">
    <InsertItemTemplate>
        <irt:EventControl ID="EventControlInsertEvent" runat="server" DataSourceID="DataSourceDataModemEvents"                
            EventDate='<%# Bind("EVENT_DATE") %>'
            EventTypes='<%# Bind("EVENT_TYPE") %>'>  
            <CustomContent>
                 Additional Property: 
                 <asp:TextBox ID="AdditionalTextBox" runat="server" Text='<%# Bind("ADDITIONAL_PROPERTY") %>'  />                            
            </CustomContent>
        </irt:EventControl>
    </InsertItemTemplate>
</irt:FormView>

我觉得理论上一切都是正确的。但我得到一个ASP.NET运行时编译错误@line 4637:

Compiler Error Message: CS0128: A local variable named 'AdditionalTextBox' is already defined in this scope

Source Error:

Line 4635:            #line default
Line 4636:            #line hidden
Line 4637:            System.Web.UI.WebControls.TextBox AdditionalTextBox;
Line 4638:            
Line 4639:            #line 378 "C:\MyProj\trunk\Releases\Source\FilePathSensored.aspx"

此行的代码是:

Line 4620:         [System.Diagnostics.DebuggerNonUserCodeAttribute()]
Line 4621:         public System.Collections.Specialized.IOrderedDictionary @__ExtractValues__control84(System.Web.UI.Control @__container) {

...
Line 4628:             #line default
Line 4629:             #line hidden
Line 4630:             System.Web.UI.WebControls.TextBox AdditionalTextBox;
Line 4631:             
Line 4632:             #line 378 "C:\MyProj\trunk\Releases\Source\FilePathSensored.aspx"
Line 4633:             AdditionalTextBox = ((System.Web.UI.WebControls.TextBox)(@__container.FindControl("AdditionalTextBox")));
Line 4634:             
Line 4635:             #line default
Line 4636:             #line hidden
Line 4637:             System.Web.UI.WebControls.TextBox AdditionalTextBox;
Line 4638:             
Line 4639:             #line 378 "C:\MyProj\trunk\Releases\Source\FilePathSensored.aspx"
Line 4640:             AdditionalTextBox = ((System.Web.UI.WebControls.TextBox)(@__container.FindControl("AdditionalTextBox")));
Line 4641:             

如您所见,为我的aspx生成的代码具有两次声明的AdditionalTextBox

有谁知道这是为什么?更重要的是,我如何解决这个问题或解决这个问题?

提前致谢 Nandun

1 个答案:

答案 0 :(得分:0)

如果文本框的ID不是强制性的,并且您没有在代码隐藏中使用它,那么您可以安全地删除它,asp.net将自动生成它。