我在使用SelectedItems的selectedValue选项时遇到了问题,因为某些原因,它不会选择项目,尽管它在列表中……
我的控制器:
public ActionResult CreateTransformer(string edit)
{
var equipment = GenIDQueries.FindEquipment(edit);
ViewData["Feeder"] = new SelectList(GenIDQueries.GetFeeders(equipment.OpsCentre.ToString()),
"CircuitID",
"CircuitDescription",
equipment.Feeder);
return View(equipment);
}equipment.Feeder的类型为整型。
我的观点:
<p>
<b><%=Html.LabelFor(m=>m.Feeder) %>:</b><font color="red">*</font>
<%=Html.DropDownListFor(m=>m.Feeder, ViewData["Feeder"] as SelectList, "") %>
<%= Html.ValidationMessageFor(m => m.Feeder)%>
</p>我的GenIDQueries.GetFeeders:
public static IEnumerable<Circuit> GetFeeders(string distNo)
{
int distNoNumber;
if ( int.TryParse(distNo, out distNoNumber))
{
return ActiveRecordLinq.AsQueryable<Circuit>()
.Where(x => x.DistrictCircuitRelations
.Any(y => y.District.DistrictNo == distNoNumber))
.OrderBy(x => x.CircuitDescription)
.Select(x => new Circuit
{
CircuitID = x.CircuitID,
CircuitDescription = x.CircuitDescription
});
}
return new List<Circuit>();
}我已经验证了我想要选择的元素确实是由GenIDQueries返回的,但是当页面加载时,它从未选择过该选项,在HTML源代码中,该项也没有被选中。
谢谢你的帮助!
发布于 2011-03-29 05:12:59
设置选定值时,应将其设置为选定的CircuitID,而不是Feeder对象。
发布于 2011-03-29 05:21:05
您为什么要使用此Plague of ViewData?我认为ViewData是一种病毒,起源于微软的开放空间实验室,并通过互联网博客帖子和文章传播。
视图模型是ASP.NET MVC中的一种方式:
型号:
public class MyViewModel
{
public string SelectedValue { get; set; }
public IEnumerable<SelectListItem> Items { get; set; }
}控制器:
public ActionResult CreateTransformer(string edit)
{
var equipment = GenIDQueries.FindEquipment(edit);
var items = GenIDQueries.GetFeeders(equipment.OpsCentre.ToString());
var model = new MyViewModel
{
SelectedValue = equipement.CircuitID,
Items = new SelectList(items, "CircuitID", "CircuitDescription")
};
return View(model);
}查看:
<%= Html.DropDownListFor(m => m.CircuitID, Model.Items, "") %>
<%= Html.ValidationMessageFor(m => m.CircuitID) %>https://stackoverflow.com/questions/5463273
复制相似问题