Lista multiselect non mostrare gli elementi selezionati in C # utilizzando MVC linq2sql
-
21-09-2019 - |
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>
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