سؤال

لقد جربت العديد من الطرق المختلفة لتمرير العناصر المحددة إلى قائمة MultiSelect دون حظ. أخيرًا ، جربت هذا ، والذي أعتقد أنه يجب أن يعرض جميع العناصر على النحو المحدد ولا يزال هناك شيء في القائمة.

public MultiSelectList Companies { get; private set; }

Companies = MulitSelectList(subcontractRepository.SubcontractCompanies(Subcontract.subcontract_id), "Value", "Text");

في subcontractrepository.cs:

public IEnumerable<SelectListItem> SubcontractCompanies(Guid id)
{
     return c in db.companies
     select new SelectListItem
     {
          Text = c.company_name,
          Value = c.company_id.ToString(),
          Selected = true
     }
}

في رؤيه:

<p>
    <label for="Companies">Company:</label>
    <%= Html.ListBox("Companies", Model.Companies) %>
    <%= Html.ValidationMessage("Companies", "*") %>
</p>
هل كانت مفيدة؟

المحلول

اكتشف القضية هنا. يجب أن يكون لدى Multiselectlist اسم مختلف عن صندوق القائمة. جعل هذا التغيير والآن كلا الإصدارين من العمل الكود.

نصائح أخرى

مُنشئ Multiselectlist لديه معلمة رابعة - عناصر محددة. استخدمه:

http://msdn.microsoft.com/en-us/library/system.web.mvc.multiselectlist.multiselect.aspx

استخدم هذا الرمز:

public class SelectCompanyItem
{
    public string Name { get; set; }
    public Guid Id { get; set; }
}

public IEnumerable<SelectCompanyItem> SubcontractCompanies(Guid id)
{
     return c in db.companies
     select new SelectCompanyItem
     {
          Name = c.company_name,
          Id = c.company_id
     }
}

var companiesList = subcontractRepository.SubcontractCompanies(Subcontract.subcontract_id);
Companies = new MultiSelectList(companiesList , "Id", "Name", companiesList.Select(a => a.Id));

هل يعمل؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top