Как установить свойство .Selected элемента в ASP.NET MVC SelectList с помощью LINQ? - PullRequest
0 голосов
/ 29 ноября 2011

Я пытаюсь заполнить SelectList в методе действия для раскрывающегося списка в представлении.Раскрывающийся список отображается в представлении просто отлично, но атрибут selected не отображается с использованием следующего кода:

public ActionResult Edit(int ID)
{
    var ctx = new NorthwindEntities();
    var product = ctx.Products.Where(p => p.ProductID == ID).SingleOrDefault();
    var selectList = new SelectList(ctx.Categories, "CategoryID", "CategoryName");
    selectList.Where(s => s.Value == product.CategoryID.ToString()).SingleOrDefault().Selected = true; 
    ViewData["CategoryID"] = selectList;
    return View(product); 
}

Однако, передача параметра selectedValue конструктору SelectList делает работу:

var selectList = new SelectList(ctx.Categories, "CategoryID", "CategoryName", product.CategoryID.ToString());

Я предполагаю, что либо проблема выражена в LINQ, либо SelectedItem можно указать только в конструкторе SelectList.Есть идеи?

1 Ответ

0 голосов
/ 29 ноября 2011

Ответ на этот вопрос здесь

Установить выбранное значение в SelectList после создания экземпляра

Если вы все еще считаете, что это неправильно, разбейте свой запрос linq и проверьте, чтобы увидетьесли вы можете найти объект в списке, а затем выполнить if (obj! = null) {selected = true;}

Но из того, что я прочитал, выбранное свойство можно установить только в конструкторе.

в этой ссылке есть метод-обертка / помощник

public static string DropDownListEx(this HtmlHelper helper, string name, SelectList selectList, object selectedValue)
{
    return helper.DropDownList(name, new SelectList(selectList.Items, selectList.DataValueField, selectList.DataTextField, selectedValue));
}

Этот миг поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...