Pregunta

Me movía y luego volvió a esto, pero sigo siendo incapaz de conseguir que funcione.

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

En 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
            };
    }

Ver:

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

html producido:

    <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>
¿Fue útil?

Solución

I encontró la solución. El cuadro de lista debe tener un nombre diferente del MultiSelectList. Me cambió el nombre del MultiSelectList en mi código original, y funciona. Yo no quiero ni siquiera empezar a pensar en la cantidad de tiempo que se gasta en esto!

Otros consejos

Este es un trabajo en torno fea por ahora. Establecer su ViewData con los valores que desea seleccionado.

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

Todavía estoy tratando de depurar y ver qué está sucediendo esto. Sorprendentemente la prueba Unidad para este caso de uso en el proyecto MVC funciona bien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top