Asp.net mvc 2 SelectList对象selectedValue问题

Asp.net mvc 2 SelectList对象selectedValue问题,asp.net-mvc-2,selectlist,Asp.net Mvc 2,Selectlist,我对SelectedItems的selectedValue选项有问题,由于某种原因,它不会选择该项,尽管它在列表中 我的控制器: public ActionResult CreateTransformer(string edit) { var equipment = GenIDQueries.FindEquipment(edit); ViewData["Feeder"] = new SelectList(GenIDQueries.GetFe

我对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);
    }
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);
}
设备。给料机为整型

我的看法是:

<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>
My 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源代码中,该项也没有被选择


谢谢你的帮助

设置选定值时,应将其设置为选定的CircuitID,而不是馈线对象。

为什么要使用此选项?我认为VIEWDATA作为一种病毒开始于微软开放空间实验室,并通过互联网博客文章和文章传播。p> 视图模型是ASP.NET MVC中的一种方式:

型号:

public class MyViewModel
{
    public string SelectedValue { get; set; }
    public IEnumerable<SelectListItem> Items { get; set; }
}
视图:


是的。有趣的是,我将新的Selectlist放入一个变量中,它甚至显示该项已被选中,但当页面加载时,它没有选择它。我同意您的看法,ViewData是一个瘟疫,我只使用此方法调试我的案例。如果我将以下内容放入视图中:new SelectListGenIDQueries.GetFeeders1、CircuitID、CircuitDescription、Model.Feeder SelectList会找到该项,并且该项对于Selected的属性为true,但是当页面加载时,该项不会被选中作为MVC2的新成员,我当然希望了解您对ViewData的看法。但是发布一个名为VisueData瘟疫的链接,链接到维基百科的一篇关于瘟疫的文章,会让你投下我的反对票,因为这是非常错误的。如果你认为应该避免使用ViewData,请说明原因,或者发布一个真实的引用-如果你这样做,我会将拒绝改为向上。
<%= Html.DropDownListFor(m => m.CircuitID, Model.Items, "") %>
<%= Html.ValidationMessageFor(m => m.CircuitID) %>