Warum ist nicht Mehrfachauswahl-Liste zeigt ausgewählte Elemente? MVC
-
22-09-2019 - |
Frage
Ich zog auf und kam dann auf diese zurück, aber ich bin immer noch nicht in der Lage, es zu Arbeit zu erhalten.
var companiesList = subcontractRepository.SubcontractCompanies(Subcontract.subcontract_id);
IEnumerable<Guid> selectedList = companiesList.Select(a => a.Id);
Companies = new MultiSelectList(companiesList, "Id", "Name", selectedList);
In 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
};
}
Ausblick:
<p>
<label for="Companies">Company:</label>
<%= Html.ListBox("Companies", Model.Companies) %>
<%= Html.ValidationMessage("Companies", "*") %>
</p>
erzeugten 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>
Lösung
Ich fand die Lösung. Die List-Box muss einen anderen Namen aus dem MultiSelectList hat. Ich umbenannt MultiSelectList in meinem ursprünglichen Code, und es funktioniert. Ich will nicht einmal beginnen, über die Höhe der Zeit, die ich dafür ausgegeben zu denken!
Andere Tipps
Dies ist eine hässliche Arbeit um für jetzt. Stellen Sie Ihr Bildschirmtextsystem mit den Werten, die Sie ausgewählt werden sollen.
ViewData["Companies"] = new string[] { "guid-1", "guid-2" };
Ich versuche immer noch zu debuggen und zu sehen, warum dies geschieht. Suprisingly der Unit-Test für diesen Anwendungsfall in dem MVC-Projekt funktioniert.