Question

je suis parti et suis revenu à cela, mais je suis toujours incapable de le faire fonctionner.

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

Dans SubcontractRepository.cs

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

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

Voir:

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

produit html:

    <p>
        <label for="Companies">Company:</label>
        <select id="Companies" multiple="multiple" name="Companies"><option value="4cf411d0-e111-488b-822f-ea194951cfda">Second Company</option>
        <option value="1c21e613-a668-4817-bf6d-73befb8c9dbd">Test Company</option>
        </select>
    </p>
Était-ce utile?

La solution

J'ai trouvé la solution. Le ListBox doit avoir un nom différent de celui MultiSelectList. Je renommé le MultiSelectList dans mon code d'origine, et il fonctionne. Je ne veux pas même commencer à penser à la quantité de temps passé à ce sujet!

Autres conseils

Voici un travail laid autour pour l'instant. Définissez vos ViewData avec les valeurs que vous souhaitez sélectionnée.

ViewData["Companies"] = new string[] { "guid-1", "guid-2" };

J'essaie toujours de déboguer et de voir pourquoi cela se passe. Etonnamment le test unitaire pour ce cas d'utilisation dans le projet MVC fonctionne très bien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top