2009-07-30 11 views
13

Ich habe eine Website, die ASP.Net MVC Beta 5 verwendet, und ich habe es gerade auf ASP.Net MVC 1.0 aktualisiert. Ich habe Probleme mit dem ausgewählten Element in einer Dropdown-Liste.ASP.Net Html.DropDownList Ausgewähltes Element nicht ausgewählt

Die Folge Person hat eine ähnliche Frage (Html.DropDownList in ASP.NET MVC RC (refresh) not pre-selecting item), aber ich es keine Antwort gibt (anders als es ein Fehler sein könnte)

Mein Controller-Methode sieht wie folgt aus:

[AcceptVerbs(HttpVerbs.Get)] 
public ActionResult View(Guid id) 
{ 
    IntegrationLogic logic = new IntegrationLogic(new IntegrationLinq()); 
    CompanyLogic companyLogic = new CompanyLogic(new CompanyLinq()); 
    IntegrationContainer container = new IntegrationContainer(); 

    container.Sources = logic.GetImportSource(id); 
    container.Companies = companyLogic.GetCompanies(); // Returns a IList<company> 
    container.SourceActions = logic.GetAllSourceActions(); // Returns an IList<SourceAction> 
    container.SinkActions = logic.GetAllSinkActions(); 
    container.SuccessActions = logic.GetAllSuccessActions(); 
    container.FailureActions = logic.GetAllFailureActions(); 
    container.Actions = logic.GetAllActions(); 
    container.Watchers = logic.GetAllWatcherActions(); 
    container.ChainActions = logic.GetAllChainActions(); 

    return View("View", container); 
} 

Die Aussicht ist ein stark gegen das Modell eingegeben als

public partial class View : ViewPage<IntegrationContainer> {} 

Das Gebiet Problem in der Ansichtsvorlage folgt:

Ich erstelle eine Dropdown-Liste, das ausgewählte Element wird nie ausgewählt - und das ist das Problem. "item.CompanyID" ist eine Guid, "id" ist eine GUID und "name" ist eine Zeichenfolge für das Firmenobjekt, das in der IList bereitgestellt wird, die in der ViewData.Model.Companies-Instanz enthalten ist.

Ist das eigentlich ein Bug? - Ich finde es schwer zu verstehen, warum dies immer noch in ASP.Net MVC ... Ich wäre total glücklich, wenn es etwas ist, was ich getan habe.

Unabhängig davon, was wäre die vorgeschlagene Arbeit um?

Dank

Antwort

21

Es stellt sich heraus, dass, wenn der Name Ihrer Kontrolle über Html.DropDownList die gleichen Namen wie die Objektsammlung ist es ein Problem mit ASP.Net MVC verursacht.

Also, wenn ich den folgenden Code ändern:

<label for="Companies">Company: </label><%=Html.DropDownList("Companies", 
               new SelectList(ViewData.Model.Companies, "id", "name", item.CompanyID))%> 

zu:

<label for="Companies">Company: </label><%=Html.DropDownList("company", 
               new SelectList(ViewData.Model.Companies, "id", "name", item.CompanyID))%> 

jetzt alles funktioniert. Dies ist, weil der Name der Sammlung auf dem Modell war Model.Companies .... bonkers ... Beachten Sie auch, dass die Änderung des Falls des Namens des Steuerelements von "Companies" zu "companies" funktioniert auch nicht (was macht Sinn nehme ich an).

Ich könnte das Modell ändern, aber da das meiste davon mit Linq-to-SQL erstellt wird, ist es einfacher, die Namen der Html-Elemente zu ändern.

+1

Nach dem Durchsuchen von 6 Fragen zu SO, das ist die einzige Antwort, die funktioniert ... Danke! – Martin

+0

Kein Problem. :) – Kinlan

+0

Ich habe meinen Kopf gegen die Wand geschlagen, vielen Dank. – aboy021

Verwandte Themen