Liste Multiselect ne pas montrer les éléments sélectionnés dans c # à l'aide linq2sql mvc
-
21-09-2019 - |
Question
J'ai essayé beaucoup de différentes façons de passer les éléments sélectionnés dans la liste des multiselect sans chance. Enfin, j'ai essayé ce que je pense, devrait afficher tous les éléments comme sélectionné et toujours rien dans la liste est sélectionnée.
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
}
}
Voir:
<p>
<label for="Companies">Company:</label>
<%= Html.ListBox("Companies", Model.Companies) %>
<%= Html.ValidationMessage("Companies", "*") %>
</p>
La solution
Découverte de la question ici. Le MultiSelectList doit avoir un nom différent de la zone de liste. Fait ce changement et maintenant les deux versions du code de travail.
Autres conseils
constructeur a MultiSelectList quatrième paramètre - éléments sélectionnés. Utilisez-le:
Utilisez ce 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));
Est-ce que ça marche?
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow