标签文本数据绑定到带点的列别名

Label text databind to a column alias with dot

我有这个Select声明:

SELECT recordID As [Zap.st.] FROM SomeTable

当我尝试使用 asp:Label 将结果绑定到带有模板字段的 GridView 时,出现此错误:

System.Web.HttpException (0x80004005): DataBinding: 'System.Data.DataRowView' does not contain a property with the name 'Zap'

这是一个示例 GridView:

<asp:GridView ID="gvMainData" runat="server" AutoGenerateColumns="false">
  <Columns>
    <asp:TemplateField HeaderText="Zap.št." SortExpression="Zap.st." ItemStyle-HorizontalAlign="Left" HeaderStyle-HorizontalAlign="Left">
      <ItemTemplate>
        <asp:Label ID="lblZapSt" runat="server" Text='<%# Eval("Zap.st.") %>' />
      </ItemTemplate>
    </asp:TemplateField>
  </Columns>
</asp:GridView>

我试过了:

Text='<%# Eval("[Zap.st.]") %>'
Text='<%# Eval("'Zap.st.'") %>'

但其中 none 似乎有效。

编辑:进一步澄清我的问题:

我的 Select 语句是 Sql 服务器上的一个视图,我的 asp.net 中的结果是 [Zap.st],没有参考这个是 [记录 ID]

试试这个代码:

<asp:GridView ID="gvMainData" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="Zap.št." SortExpression="Zap.st." ItemStyle-HorizontalAlign="Left" HeaderStyle-HorizontalAlign="Left">
  <ItemTemplate>
    <asp:Label ID="lblZapSt" runat="server" Text='<%# Eval("recordID") %>' />
  </ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

我在SO上发现了一个类似的问题,这是解决方案:

<asp:Label ID="lblZapStD" runat="server" Text='<%# DataBinder.GetPropertyValue(Container.DataItem, "Zap.st.") %>' />

这是 original question 已接受的答案。