MVC3 Razor - предварительный выбор ListBox не работает - PullRequest
2 голосов
/ 09 июня 2011

Я генерирую ListBox с предварительно выбранными значениями, как показано ниже.Проблема в том, что когда я выбираю элемент, длина строки его ключей больше 1, список выбирает неправильные элементы.Вот ситуация,

public static System.Web.Mvc.MultiSelectList CreateListBox()
{
    List<KeyValuePair<string, string>> alanList = new List<KeyValuePair<string, string>>();
            alanList.Add(new KeyValuePair<string, string>("A", "A"));
            alanList.Add(new KeyValuePair<string, string>("B", "B"));
            alanList.Add(new KeyValuePair<string, string>("BC", "BC"));
            alanList.Add(new KeyValuePair<string, string>("C", "C"));
            alanList.Add(new KeyValuePair<string, string>("D", "D"));
            alanList.Add(new KeyValuePair<string, string>("BAYI", "BAYI"));

            List<string> vals = new List<string>();
            vals.Add("BAYI");
            vals.Add("BC");
            System.Web.Mvc.MultiSelectList ret = new System.Web.Mvc.MultiSelectList(alanList, "Key", "Value", vals);

            return ret ;
}

В результате выбираются элементы HTML со значениями A, B и C.BAYI и BC не выбраны. В чем проблема?Есть идеи?

1 Ответ

4 голосов
/ 10 июня 2011

Мне прекрасно подходит следующее, и я бы порекомендовал его вам:

Модель:

public class MyViewModel
{
    public IEnumerable<string> SelectedItemIds { get; set; }

    public IEnumerable<SelectListItem> Items 
    {
        get
        {
            return new[]
            {
                new SelectListItem { Value = "A", Text = "A" },
                new SelectListItem { Value = "B", Text = "B" },
                new SelectListItem { Value = "BC", Text = "BC" },
                new SelectListItem { Value = "C", Text = "C" },
                new SelectListItem { Value = "D", Text = "D" },
                new SelectListItem { Value = "BAYI", Text = "BAYI" },
            };
        }
    }
}

Контроллер:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new MyViewModel
        {
            SelectedItemIds = new[] { "BAYI", "BC" }
        };
        return View(model);
    }
}

Вид:

@model MyViewModel

@Html.ListBoxFor(
    x => x.SelectedItemIds, 
    new SelectList(Model.Items, "Value", "Text")
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...