2017-08-31 26 views
0

我想在我的索引视图中填充一个下拉列表,其中列出了web.config中的值。MVC 4 C#如何检索控制器中的配置值,以绑定视图中的下拉

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

我想从配置抢值1,值2,和值3,并为每个值一个友好的显示名称把它纳入一个下拉列表。

当提交命中并查询服务器并将结果返回到表中时,将使用列表中的值。

我不知道如何编码控制器的一部分来获取值并发送到索引页面(使用viewbag?)其他例子涉及创建一个ViewModel,但我希望能够添加到值未来无需重新编译应用程序,这就是为什么我需要它在配置中。

请向我展示一个例子,因为我还是MVC的新手。

我承担我会做一些这样的观点: @ Html.DropDownListFor(型号=> model.YourModelProperty, (IEnumerable的)ViewBag.DropDownList “---选择一个值---”)

+0

为什么不使用一个数据库,而不是配置文件存储的值? –

+0

因为我将不得不创建一个新的数据库来存储一些值。所有这些应用程序要做的就是获取值并运行查询并显示结果。它非常简单的应用程序。 – Abdul

回答

1

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

using System.Configuration; 

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

步骤2(在控制器的ActionResult方法):由逗号他们解析到一个数组和修剪的任何空间在前面或解析的文本后面:

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--") 
1

尝试做这样的事情

控制器:

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> 
相关问题