Eval ConnectionString使用代码隐藏的公共属性

时间:2015-08-20 07:54:19

标签: c# asp.net eval

也许是一个愚蠢的问题,但这里什么都没有:)

到目前为止,在设置连接字符串时,我一直在为asp:SqlDataSource使用html标记,如下所示:

<asp:SqlDataSource ID="dsMyDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ActualConnStringNameFromWebConfig %>"
                SelectCommand="select something from Table">
</asp:SqlDataSource>

请注意经典表单:ConnectionString="<%$ ConnectionStrings:ActualConnStringNameFromWebConfig %>"

但是如何设置(如果可能)相同asp:SqlDataSource的连接字符串,如下所示:

ConnectionString="<%# ConnectionStrings:Eval("MyCodeBehindString") %>"

我的代码背后的地方我有这样的东西:

public partial class MyPage : System.Web.UI.Page
{
    public const string MyCodeBehindString = "ActualConnStringNameFromWebConfig";
    //rest of code
}

Web配置部分:

<connectionStrings>
    <remove name="ActualConnStringNameFromWebConfig" />
    <add name="ActualConnStringNameFromWebConfig" connectionString="Data Source=(localhost);Initial Catalog=MyDB;Persist Security Info=True; bla bla   providerName="System.Data.SqlClient" />
</connectionStrings>

当我这样使用它时,我收到一条错误,指出Server标签格式不正确......

2 个答案:

答案 0 :(得分:0)

您可以从web.config读取类似的连接字符串。为了让你阅读它,你将不得不做类似

的事情
string MyCodeBehindString = ConfigurationManager.ConnectionStrings["ActualConnStringNameFromWebConfig"].ConnectionString;

确保添加以下参考using System.Configuration;

我建议您在后面的代码中处理所有Sql内容。

using(var connection = new SqlConnection(MyCodeBehindString))
{
 //Do Some work  
}

要确保连接始终关闭,请打开using块内的连接,如上面的代码片段所示。这样做可确保在代码退出块时自动关闭连接。

答案 1 :(得分:0)

在你的代码后面设置一个包含实际连接字符串的变量(注意受保护的访问修饰符,因此它可以在aspx中访问):

<强> aspx.cs:

protected string MyCodeBehindString = ConfigurationManager.ConnectionStrings["ActualConnStringNameFromWebConfig"].ConnectionString;

<强> ASPX:

<asp:SqlDataSource ID="dsMyDataSource" runat="server" ConnectionString="<%= MyCodeBehindString %>"
    SelectCommand="select something from Table">
</asp:SqlDataSource>