我正在尝试从我的项目中的appSettings获取信息,我正在使用它,所以如果我需要编辑信息,我只需更改应用程序设置页面,我想提取密钥和值为字符串和显示到页面。继承我的代码。在我有的appSettings中,
<?xml version="1.0"?>
<appSettings>
<add key ="General" value="someValue1"/>
<add key ="Other" value="otherValue"/>
</appSettings>
在控制器页面中我有
namespace MyPro.Web.Controllers
{
using System.Collections.Generic;
using System.Configuration;
using System.Web.Mvc;
using Models.MyPro;
public class MyController
{
public ActionResult MyPro()
{
Dictionary<string, dynamic> myProData = new Dictionary<string, dynamic>();
var general = ConfigurationManager.AppSettings["General"];
var other = ConfigurationManager.AppSettings["Other"];
myProData.Add("general", general);
myPrData.Add("other", other);
var myProModel = new myProModel(myProData);
return View(myProModel);
}
}
}
在我的模型中,
namespace MyPro.Web.Models.MyPro
{
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using MyPro.Model;
public class MyProModel
{
public MyProModel(Dictionary<string, dynamic> myProData)
{
this.MyProData = myProData;
}
public Dictionary<string, dynamic> MyProData { get; private set; }
}
}
在cshtml页面中我有
@model MyPro.Web.Models.MyPro.MyProModel
<div class="content">
<h1 class="sectionHeading">Contact Us</h1>
@foreach (var item in Model.MyProData)
{
<div class="contentSection">
<h2>Tables</h2>
<div class="innerContentSection">
<table class="baseTable">
<thead><tr><th>Column1</th><th>Colum2</th></tr></thead>
<tbody>
<tr><td>@Model.MyProData</td><td>@Model.MyProData["general"].</td></tr>
<tr><td>@Model.MyProData</td><td>@Model.MyProData["other"]</td></tr>
</tbody>
</table>
</div>
</div>
}
</div>
我的问题是我如何让column1显示字符串general和other以及column2来显示来自appSettings的值的someValue1和otherValue,这是做我想要完成的事情的好习惯还是有更好的方法。我已经尝试使用列表,哈希表等堆栈中的其他方法。是否有一种简单的方法来从键和值中获取或提取数据。
答案 0 :(得分:1)
我觉得这样的事情会起作用
public class MyProModel
{
public Dictionary<string, string> MyProData { get; set; }
}
var appSettings = ConfigurationManager.AppSettings;
var myProModel = new MyProModel
{
MyProData = appSettings.AllKeys.ToDictionary(k => k, k => appSettings[k])
};
答案 1 :(得分:1)
您可能希望使用AppSettings的AllKeys属性。例如:
getendpoints
如下所述,如果您想要输出一个键子集...
首先在配置中添加一个新项目:
public ActionResult MyPro()
{
Dictionary<string, dynamic> myProData = new Dictionary<string, dynamic>();
ConfigurationManager.AppSettings.AllKeys.ToList().ForEach
(
settingsKey =>
myProData.Add(settingsKey, ConfigurationManager.AppSettings[settingsKey]);
);
var myProModel = new myProModel(myProData);
return View(myProModel);
}
然后使用此键生成要输出的列表:
<add key ="ConfigItemsToMonitor" value="General,Other"/>
您可以决定还监视ConfigItemsToMonitor的值 - 只需将其添加到逗号分隔的值列表中。确保排除空格。