我正在尝试使用所选值填充下拉列表值。 我提到了相关的文章,我也在做同样的事情。 Still Dropdown未填充所选值。不确定我错过了什么。
控制器代码:
var RegionId = new[] {
new RegionKeyValues { RegionId = 1, RegionValue = "A" },
new RegionKeyValues { RegionId = 2, RegionValue = "B" },
new RegionKeyValues { RegionId = 3, RegionValue = "D" }
};
ViewData["RegionId"] = new SelectList(RegionId, "RegionId", "RegionValue", 1);
查看代码:
<%= Html.DropDownList("RegionId",
(SelectList)ViewData["RegionId"],
"-- Select --")%>
答案 0 :(得分:5)
我认为问题在于您的属性名称是RegionId,以及ViewData名称。改变一个,看看会发生什么。
答案 1 :(得分:2)
我会尝试<%=Html.DropDownList("RegionId", new SelectList((IEnumerable)ViewData["RegionId"], "Value", "Text",1),"-- Select --")
%&gt;
在实际视图中设置值。
一般情况下,我会创建一个强类型的ViewModel,并创建将选择列表值存储为IEnumerable<SelecListItem>
然后你可以做
<%=Html.DropDownListFor(a=>a.RegionId, new SelectList(Model.Regions, "Value", "Text"),"-- Select --")`%>
其中RegionId是要设置的实际值,Model.Regions存储可能的区域列表。
总的来说,我觉得控制器和列表,视图模型等的好方法在这篇文章中here
答案 2 :(得分:1)
丽塔
以下是我对此的努力:
模特:
namespace MvcApplication1.Models
{
public class RegionKeyValues
{
public int RegionId { get; set; }
public string RegionValue { get; set; }
}
public class RegionKeyValuesViewModel
{
public int SelectedRegionId { get; set; }
public IEnumerable<RegionKeyValues> RegionList { get; set; }
}
}
控制器操作:
public ActionResult Index()
{
var regionList = new[] {
new RegionKeyValues { RegionId = 1, RegionValue = "A" },
new RegionKeyValues { RegionId = 2, RegionValue = "B" },
new RegionKeyValues { RegionId = 3, RegionValue = "D" }
};
var viewModel = new RegionKeyValuesViewModel
{
RegionList = regionList,
SelectedRegionId = 1 // hardcoded here, but in real-life, from the db
};
ViewData.Model = viewModel;
return View();
}
查看代码(在Razor中):
@model MvcApplication1.Models.RegionKeyValuesViewModel
@{
ViewBag.Title = "Home Page";
}
@Html.DropDownListFor(a => a.SelectedRegionId,
new SelectList(Model.RegionList, "RegionId", "RegionValue",
Model.SelectedRegionId), "-- Select --")
基本上,我将一个强类型的ViewModel传递给视图,并在控制器中设置选定的RegionId并将其传递给Model.SelectedRegionId。在一个真实的应用程序中,你显然是从db或其他一些结构中获取viewModel。
值得考虑作为替代方案。