asp.net mvc 3 كيف يمكنك إنشاء MultiSelect بشكل صحيح<select> باستخدام مساعد DropdownList؟



asp.net-mvc-3 drop-down-menu (1)

لا تستخدم DropDownListFor إذا كنت ترغب في إنشاء قائمة multiselect. يمكنك استخدام مساعد ListBoxFor .

عرض النموذج:

public class MyViewModel
{
    public string[] SelectedIds { get; set; }
    public IEnumerable<SelectListItem> Items { get; set; }
}

مراقب:

public ActionResult Index()
{
    var model = new MyViewModel
    {
        // preselect the first and the third item given their ids
        SelectedIds = new[] { "1", "3" }, 

        // fetch the items from some data source
        Items = Enumerable.Range(1, 5).Select(x => new SelectListItem
        {
            Value = x.ToString(),
            Text = "item " + x
        })
    };
    return View(model);
}

رأي:

@model MyViewModel
@Html.ListBoxFor(x => x.SelectedIds, Model.Items)

(عذرًا ، هناك العديد من العناصر هنا ولكن لا يبدو أن هناك ما يسمح لي بالحصول على هذا العمل.)

أرغب في إنشاء DropDownList الذي يتيح الاختيار من متعدد. أنا قادر على ملء القائمة ولكن لا يمكنني الحصول على القيم المحددة الحالية للعمل.

لدي ما يلي في جهاز التحكم الخاص بي:

ViewBag.PropertyGroups = from g in db.eFinGroups
                              where g.GroupType.Contents == "P"
                              select new
                              {
                                  Key = g.Key,
                                  Value = g.Description,
                                  Selected = true
                              };

ViewBag.SelectedPropertyGroups = from g in company.Entities .First().Properties.First().PropertyGroups select new { g.eFinGroup.Key, Value = g.eFinGroup.Description };

في رأي لدي:

@Html.DropDownListFor(model => model.PropertyGroupsX, 
   new MultiSelectList(ViewBag.PropertyGroups
             , "Key", "Value"
             , ViewBag.SelectedPropertyGroups), 
new { @class = "chzn-select", data_placeholder = "Choose a Property Group", multiple = "multiple", style = "width:350px;" })

PropertyGroupX هي سلسلة [] في النموذج.

لقد جربت جميع أنواع التكرار مع الخصائص المحددة ... اجتياز القيمة فقط ، فقط المفتاح ، كليهما ، إلخ.

أيضا ، ما هو نوع PropertyGroupX من المفترض أن يكون؟ هل صفيف السلسلة صحيح؟ أو يجب أن يكون القاموس الذي يحتوي على propertygroups الحالية؟ أنا حقا أواجه صعوبة في العثور على وثيقة في هذا الشأن.

اقترح شخص ما أنني يجب أن تستخدم ListBoxFor. لقد تغيرت لذلك ولا يزال لدي نفس المشكلة. لا يتم ضبط القيم المحددة على النحو المحدد عند تقديم علامات الخيار. هذا ما جربته:

@ Html.ListBoxFor (model => model.PropertyGroups، MultiSelectList new (ViewBag.PropertyGroups، "Key"، "Value"))

لقد جربت model.PropertyGroups كمجموعة من سلسلة مطابقة للقيم ، كمجموعة من Guid تتطابق مع هذه المعرفات ونوع مجهول مع كل من Key و Value لتتطابق مع العناصر الموجودة في ViewBag. لا شيء يبدو للعمل.