无法使用 viewmodel 在 mvc 中绑定下拉列表 属性
unable to bind dropdownlist in mvc using viewmodel property
在我的视图模型中,我有一个 getter 属性,如下所示。
[Display(Name = "Users System:")]
public string UsersSystem { get; set; }
public IEnumerable<SelectListItem> SystemsList
{
get
{
List<SelectListItem> lst = new List<SelectListItem>();
string[] UsersSystem = ConfigurationManager.AppSettings["UsersSystem"].ToString().Split(new char[] { ',' });
foreach (var item in UsersSystem)
{
lst.Add(new SelectListItem { Text = item, Value = item });
}
return lst;
}
}
我需要将值绑定到下拉列表,但我得到 Object reference not set to an instance of an object
。我的观点有以下标记
@model GazetteerAddressRequest.Lib.Model.ChangeRequestModel
@Html.DropDownListFor(model => model.UsersSystem, Model.SystemsList , new { @class = "form-control" })
有什么想法吗?谢谢
正如 Stephen 所提到的,您不能对模型 属性 和 SelectList 使用相同的名称。在 ChangeRequestModel
中添加一个新的 属性 以保存下拉列表中所选项目的值。
public string UserSystemSelected { get; set; }
在您看来
@Html.DropDownListFor(model => model.UserSystemSelected, Model.UsersSystem, new { @class = "form-control" })
在这里,您使用 Model.UsersSystem
填充下拉列表,其中包含所有 SelectListItem
的列表,并且从下拉列表中选择的值绑定到 UserSystemSelected
。
编辑:
你也可以试试这个:
在您的控制器中,在 Action 方法中
ViewBag.SystemList = new SelectList(
ConfigurationManager.AppSettings["UsersSystem"].ToString()
.Split(',')
.Select(x => new KeyValuePair<string, string>(x, x)),"Key", "Value");
在您看来
Html.DropDownListFor(m => m.UserSystemSelected, (SelectList)ViewBag.SystemList)
您必须将模型传递到视图中,否则模型将在视图中为空。
例如。首先,您可以将 SelectListItem 列表传递给 ChangeRequestModel,然后将其传递给视图。
public ActionResult YourPage(){
return View(changeRequestModel);
}
在我的视图模型中,我有一个 getter 属性,如下所示。
[Display(Name = "Users System:")]
public string UsersSystem { get; set; }
public IEnumerable<SelectListItem> SystemsList
{
get
{
List<SelectListItem> lst = new List<SelectListItem>();
string[] UsersSystem = ConfigurationManager.AppSettings["UsersSystem"].ToString().Split(new char[] { ',' });
foreach (var item in UsersSystem)
{
lst.Add(new SelectListItem { Text = item, Value = item });
}
return lst;
}
}
我需要将值绑定到下拉列表,但我得到 Object reference not set to an instance of an object
。我的观点有以下标记
@model GazetteerAddressRequest.Lib.Model.ChangeRequestModel
@Html.DropDownListFor(model => model.UsersSystem, Model.SystemsList , new { @class = "form-control" })
有什么想法吗?谢谢
正如 Stephen 所提到的,您不能对模型 属性 和 SelectList 使用相同的名称。在 ChangeRequestModel
中添加一个新的 属性 以保存下拉列表中所选项目的值。
public string UserSystemSelected { get; set; }
在您看来
@Html.DropDownListFor(model => model.UserSystemSelected, Model.UsersSystem, new { @class = "form-control" })
在这里,您使用 Model.UsersSystem
填充下拉列表,其中包含所有 SelectListItem
的列表,并且从下拉列表中选择的值绑定到 UserSystemSelected
。
编辑:
你也可以试试这个:
在您的控制器中,在 Action 方法中
ViewBag.SystemList = new SelectList(
ConfigurationManager.AppSettings["UsersSystem"].ToString()
.Split(',')
.Select(x => new KeyValuePair<string, string>(x, x)),"Key", "Value");
在您看来
Html.DropDownListFor(m => m.UserSystemSelected, (SelectList)ViewBag.SystemList)
您必须将模型传递到视图中,否则模型将在视图中为空。
例如。首先,您可以将 SelectListItem 列表传递给 ChangeRequestModel,然后将其传递给视图。
public ActionResult YourPage(){
return View(changeRequestModel);
}