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--")
我正在尝试使用我在 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--")