Frage

Ich habe viele verschiedene Arten versucht, die ausgewählten Elemente in die Liste Mehrfachauswahl ohne Glück zu übergeben. Schließlich habe ich versucht, das, was ich denke, sollten alle die Elemente anzuzeigen, wie ausgewählt und noch nichts in der Liste ausgewählt ist.

public MultiSelectList Companies { get; private set; }

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

in 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
     }
}

in Aussicht:

<p>
    <label for="Companies">Company:</label>
    <%= Html.ListBox("Companies", Model.Companies) %>
    <%= Html.ValidationMessage("Companies", "*") %>
</p>
War es hilfreich?

Lösung

Entdeckt hier das Problem. Der MultiSelectList muss einen anderen Namen aus der List-Box hat. Gemacht, dass Veränderungen und nun beiden Versionen des Codes arbeiten.

Andere Tipps

MultiSelectList Konstruktor vierte Parameter - ausgewählte Elemente. Verwenden Sie es:

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

Mit diesem Code:

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));

funktioniert es?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top