代码之家  ›  专栏  ›  技术社区  ›  Anirudh Goel

了解ASP.NET数据绑定中的参数

  •  0
  • Anirudh Goel  · 技术社区  · 15 年前

    我有一个sqldatasource连接,其中的参数insert参数设置为

    INSERT INTO [user_info] ([firstname], [lastname], [age]) VALUES (@firstname, @lastname, @age)
    

    现在我明白了@firstname、@firstname、@age是我为它们设置值的参数。

    我正在用一个formView对它进行数据绑定,它将自动用firstname、lastname和age列绑定insertitemTemplate中的文本框。例如,“名字”文本框具有以下属性。

     <asp:TextBox ID="firstnameTextBox" runat="server" Text='<%# Bind("firstname") %>' />
    

    现在我怀疑,@firstname变量如何与firstname字段绑定。我没有在任何地方显式地使用绑定。假设明天我想将插入查询重命名为

    INSERT INTO [user_info] ([firstname], [lastname], [age]) VALUES (@fn, @ln, @ag)
    

    为了用firstname等绑定@fn,我必须在何处以及所有地方进行更改。

    希望我的问题清楚。

    1 回复  |  直到 15 年前
        1
  •  0
  •   Ahmad Mageed    15 年前

    简短的回答:更改参数名称不会引起涟漪效应。更改您的列名将会。

    详细答案:在本例中,绑定(和eval)的数据绑定应用于SQL表的列名,而不是参数名。如果您开始在@fn中使用第二个insert语句,您的bind将继续使用“firstname”,而不需要更改。

    但是,如果更新了表并将“firstname”列重命名为“fn”,则情况不再是这样,现在您有两个选择:

    1. 更新所有bind()调用以使用“fn”而不是“firstname”-如果在许多地方发生,则需要进行许多更改。
    2. 更新select语句(或存储过程)以将fn列别名为firstname(即select[fn]作为firstname,…)。其他列…从[用户信息]—这是有利的,因为更改发生在源位置,并且不会影响到“firstname”的现有绑定,这意味着只在一个位置进行更改。