【发布时间】:2018-10-09 13:37:50
【问题描述】:
所有,我只是想从加载的 .config 文件中读取自定义值到 MVC 项目中。
所以我在添加的 .config 文件中设置了如下值:
"AppSettings": {
"Title": "Mobile Site"
}
我已经制作了一个基本控制器来设置值
public abstract class ControllerBase : Controller
{
protected Models.AppSettings _appSettings;
private IConfiguration _config;
public ControllerBase(IConfiguration config)
{
_config = config;
_appSettings = new Models.AppSettings();
_appSettings.SiteTitle = _config.GetSection("AppSettings").GetSection("Title").Value;
ViewBag.Settings = _appSettings;
}
}
这我也可以确认是有效的。如果我只是在其中一个操作中设置 viewbag 数据,这些值就会被拉出。
public class AppController : ControllerBase
{
public AppController(IConfiguration config) : base(config)
{
}
// GET: /<controller>/
public IActionResult Index()
{
ViewData["Settings"] = _appSettings;
return View("Index");
}
我可以通过这种方式访问视图中的值,但由于我当前添加的值只是站点标题的内容(因此我可以在一个简单的 .config 文件中配置这些内容)我想要站点之类的东西将标题传递给每个动作,而不必每次都为每个单独的动作专门传递它。
我尝试通过在视图中进行设置来关注显示此工作的视频:
@{
ViewData["Logo"] = "~/img/bird.png";
ViewData["Icon"] = "~/img/logo.ico";
var Settings = ((Mobile.Models.AppSettings)ViewBag.Settings);
}
但是如果再次加载页面,页面将无法正确加载,我没有在加载页面的操作中指定设置。
如何做到这一点?以后还能这样吗?
【问题讨论】:
标签: c# asp.net-core-mvc