2

我想告诉我的访问者他们当前正在与哪个数据库进行交互。我的应用程序的 web.config 中只有一个实体框架连接字符串。数据库名称(初始目录)是存储在 web.config 中的连接字符串的一部分。

我可以通过包含以下 html 在共享布局中公开整个连接字符串。

You are connecting to <span class="databasename">@System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionStringName"].ConnectionString)</span>!

但我不需要整个连接字符串,只需要数据库名称。有没有办法在不涉及控制器或实例化新的 SqlConnection() 的情况下做到这一点?有什么建议么?

4

2 回答 2

2

你可以尝试这样的事情:

@{
    var sqlDB = new System.Data.SqlClient.SqlConnectionStringBuilder(
        System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionStringName"].ConnectionString)
    );
    var dbName = sqlDB.InitialCatalog;
}

You are connecting to <span class="databasename">@dbName</span>!

这将解析连接字符串并返回数据库。或者,如果您想要与连接字符串不同的属性,只需使用对象的不同属性即可SqlConnectionStringBuilder

于 2013-04-02T16:41:54.043 回答
1

我用

@using Firm.Applic.Common
@Html.RenderDataSource() 

在标记中和这个 HtmlHelper 在一个类中

using System.Web;
using System.Web.Mvc;
using System.Configuration;
using System.Data.Common;

namespace Firm.Applic.Common
{
    public static class HtmlHelpers
    {
        public static IHtmlString RenderDataSource(this HtmlHelper htmlHelper)
        {
            var cnstr = ConfigurationManager.ConnectionStrings["ORA"].ConnectionString;
            var builder = new DbConnectionStringBuilder();
            builder.ConnectionString = cnstr;
            return new MvcHtmlString(builder["Data Source"].ToString());
        }
    }   
}
于 2017-10-26T12:27:43.057 回答