我正在学习asp.net核心1.0.1并且我已成功连接到SQLite数据库。连接字符串保存在appsettings.json
中。我把相同的数据库,一个放在bin文件夹中,一个放在netcoreapp1.0中。
我可以创建一条新记录并保存。我在Firefox中使用SQLite管理器检查了两个数据库,看看哪个正在使用,但两者都没有保存数据。
我尝试使用某种messageBox来显示连接字符串路径,但asp.net核心中没有消息框。如何在asp.net核心中显示消息?
// appsettings.json
"ConnectionStrings": {
"MyDatabase": "Data Source=MyDb.sqlite"
}
答案 0 :(得分:1)
以下是如何将appsettings.json中的连接字符串输出到视图中。
首先,这是我在appsettings.json
中定义连接字符串的方式"database": {
"connection": "Data Source=.;Initial Catalog=OdeToFood;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
}
创建一个类来存储连接字符串
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace CoreTest
{
public class AppSettings
{
public string connection { get; set; }
}
}
更新startup.cs文件
确保构造函数正在读取appsettings.json文件
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
将这些行添加到ConfigureServices
services.AddOptions();
services.Configure<AppSettings>(Configuration.GetSection("database"));
更新控制器
public class HomeController : Controller
{
private AppSettings _AppSettings;
public HomeController(IOptions<AppSettings> settings)
{
_AppSettings = settings.Value;
}
添加控制器方法
public async Task ContentAction()
{
var constr = _AppSettings.connection;
var jsonString = "{\"connectionString\""+ constr + "}";
byte[] data = Encoding.UTF8.GetBytes(jsonString);
Response.ContentType = "application/json";
await Response.Body.WriteAsync(data, 0, data.Length);
}
从您的视图中调用控制器方法
<div>
<a asp-controller="Home" asp-action="ContentAction" class="btn btn- success confirmCreate">
Generate Response
<i class="fa fa-angle-left"></i>
</a>
</div>
输出连接字符串
{"connectionString"Data Source=.;Initial Catalog=OdeToFood;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False}
答案 1 :(得分:0)
如果您只需要快速输出响应正文,可以在控制器上添加一个方法,就像这样......
public async Task ContentAction()
{
var jsonString = "{\"test\":1,\"output\":false}";
byte[] data = Encoding.UTF8.GetBytes(jsonString);
Response.ContentType = "application/json";
await Response.Body.WriteAsync(data, 0, data.Length);
}
然后你可以从你的视图中调用这个控制器方法......
<div>
<a asp-controller="Home" asp-action="ContentAction" class="btn btn-success confirmCreate">
Generate Response
<i class="fa fa-angle-left"></i>
</a>
</div>
这将输出像这样的值..
{"test":1,"value":false}
答案 2 :(得分:0)
最后,数据库实际上保存在bin \ Debug \ netcoreapp1.0中。(我看错了文件夹)。
但我仍然不知道如何在asp.net核心中显示一条简单的消息!
我正在学习asp.net核心+加载其他东西只是为了创建一个asp.net数据库驱动的网站,但这并不容易。简单的事情很难实现。
使用wpf,c#+ mvvm很棒,我希望我可以用它们代替web开发。但是,嘿,我们生活和学习。 : - )
感谢。