MVC 4 C# 如何在控制器中检索配置值以绑定视图中的下拉列表

MVC 4 C# How to Retrieve Configuration Values in Controller to Bind Dropdown in View

我正在尝试使用我在 web.config 中列出的值来填充索引视图中的下拉列表。

<add key="DropdownValues" value="Value1, Value2, Value3" />

我想从配置中获取 Value1、Value2 和 Value3,并将其放入下拉列表中,每个值都有一个友好的显示名称。

当点击提交并查询服务器并且 returns 结果为 table 时,将使用列表中的值。

我不确定如何编写控制器部分的代码以获取值并发送到索引页面(使用 viewbag?)其他示例涉及创建 ViewModel,但我希望能够添加到值将来无需重新编译应用程序,这就是我希望在配置中使用它的原因。

请给我举个例子,因为我对 MVC 还是个新手。

我假设在视图中我会做类似的事情: @Html.DropDownListFor(型号=> model.YourModelProperty, (IEnumerable)ViewBag.DropDownList, "---Select 一个值---")

尝试做这样的事情

控制器:

public ActionResult Index()
{
var GetWebConfigValue1 = System.Configuration.ConfigurationManager.AppSettings["WebConfigValue1"].ToString();

    ViewBag.WebConfigValue1 = GetWebConfigValue1;

    // Repeat the lines of code above to get more values

    return View();

}

查看:

<select>
    <option selected="true" disabled="disabled">Choose a Value</option>
    <option value="@ViewBag.WebConfigValue1">@ViewBag.WebConfigValue1</option>
    <option value="@ViewBag.WebConfigValue2">@ViewBag.WebConfigValue2</option>
    <option value="@ViewBag.WebConfigValue3">@ViewBag.WebConfigValue3</option>
</select>

第 1 步(在控制器 ActionResult 方法中):从配置中读取值:

using System.Configuration;

string configvalue1 = ConfigurationManager.AppSettings["DropdownValues"];

第 2 步(在控制器 ActionResult 方法中):通过逗号和 trim 解析文本前面或后面的任何 space 将它们解析为数组:

string[] values = configvalue1.Split(',').Select(sValue => sValue.Trim()).ToArray();

第 3 步(在控制器 ActionResult 方法中):声明一个 selectlistItem 列表,遍历数组以填充:

        List<SelectListItem> dropDowns = new List<SelectListItem>();
        for (int i = 0; i < values.Length; i++)
        {
            dropDowns.Add(new SelectListItem { Text = values[i], Value = values[i] });
        }

第 4 步(在控制器 ActionResult 方法中):在您的 ViewBag 中分配它们:

ViewBag.DropdownVals = dropDowns;

第 5 步:(在您的视图中)设置一个与您的 viewbag 项目绑定的下拉列表。 您需要在此处将其显式转换为 IEnumerable SelectListItem 对象,否则剃须刀引擎会生气!!!

@Html.DropDownList("YourElementName", (IEnumerable<SelectListItem>)ViewBag.DropdownVals, "--Choose Your Value--")

完全控制器:

    public ActionResult Index()
    {            
        string[] values = (ConfigurationManager.AppSettings["DropdownValues"]).Split(',').Select(sValue => sValue.Trim()).ToArray();
        List<SelectListItem> dropDowns = new List<SelectListItem>();
        for (int i = 0; i < values.Length; i++)
        {
            dropDowns.Add(new SelectListItem { Text = values[i], Value = values[i] });
        }
        ViewBag.DropdownVals = dropDowns;
        return View();
    }

全视图:

@{
    ViewBag.Title = "Index";
}
@Html.DropDownList("YourElementName", (IEnumerable<SelectListItem>)ViewBag.DropdownVals, "--Choose Your Value--")