0

我正在使用 SqlDataSource 并避免直接在我的代码中编写长查询,我想我可以创建一个 Query 类,将我想要的查询作为字符串返回。我尝试了下面的代码,但我只是得到“服务器标签不能包含 <% ... %> 构造。”

在我使用存储过程之前,但我的虚拟主机不允许这样做,所以这就是我考虑查询类解决方案的时候。我还需要补充一点,我不想在代码隐藏中进行数据绑定。

有没有办法做到这一点?

    <asp:SqlDataSource ID="DS" 
        runat="server"
        DataSourceMode="DataSet"  
        ConnectionString="<%$ ConnectionStrings:conn %>"
        ProviderName="MySql.Data.MySqlClient"
        SelectCommand="<% Query.getTestQuery() %>"
        >
    </asp:SqlDataSource>
4

2 回答 2

1

在 ASP.NET 中无法做到这一点。标签中的代码<% %>用于运行任意代码,而不是用于设置属性值。标签中的代码<%= %>用于渲染到输出流。中的代码<%# %>用于数据绑定,这与您要完成的工作类似,但并不相同。代码<%$ %>用于表达式绑定,但它们在页面生命周期中执行得太早,因此不太可能在您的场景中工作。

使用 ObjectDataSource 是一种方法,因为此时它只是代码,您的代码可以根据页面的状态做任何事情。

使用派生的 SqlDataSource 是另一种选择。创建一个从 SqlDataSource 派生的控件并重写其OnInit方法。在该OnInit方法中,您可以根据页面状态动态设置 SelectCommand 以执行您想要的任何操作。

于 2009-12-29T20:43:06.447 回答
0

也许使用 ObjectDataSource。这样,在您的对象内部,您就可以在那里进行动态查询。

否则,您可以在代码隐藏中的 SqlDataSource 选择事件期间修改 SelectCommand。然后您可以将 SelectCommand 更改为您喜欢的任何内容。

于 2009-07-28T10:49:58.963 回答