Domanda

Ho provato molti modi diversi per passare gli elementi selezionati alla lista di selezione multipla senza fortuna. Infine, ho provato questo, che credo dovrebbe visualizzare tutti gli elementi come selezionato e ancora niente della lista viene selezionato.

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 vista:

<p>
    <label for="Companies">Company:</label>
    <%= Html.ListBox("Companies", Model.Companies) %>
    <%= Html.ValidationMessage("Companies", "*") %>
</p>
È stato utile?

Soluzione

Scoperto il problema qui. Il MultiSelectList deve avere un nome diverso dal ListBox. Fatto che il cambiamento ed ora entrambe le versioni del lavoro codice.

Altri suggerimenti

MultiSelectList costruttore ha il quarto parametro - elementi selezionati. Usalo:

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

Utilizzare questo codice:

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

Funziona?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top