SelectList Объект selectedValue проблема - PullRequest
2 голосов
/ 28 марта 2011

У меня проблемы с параметром selectedValue для SelectedItems, по какой-то причине он не будет выбирать элемент, несмотря на то, что он находится в списке ...

Мой контроллер:

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 имеет тип Integer.

My View:

<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 элемент также не выбирается.

Спасибо за помощь!

Ответы [ 2 ]

2 голосов
/ 29 марта 2011

При установке выбранного значения вы должны установить для него значение CircuitID, а не объект Feeder.

1 голос
/ 29 марта 2011

Почему вы используете эту Чуму ViewData ?Я считаю ViewData вирусом, зародившимся в лабораториях открытого пространства Microsoft и распространяющимся через интернет-посты и статьи.

Просмотр моделей - это путь в 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) %>
...