2009-07-30 16 views
13

ASP.Net MVC Beta 5 kullanan bir sitem var ve bunu ASP.Net MVC 1.0'a yükselttim. Bir açılan listede seçilen öğe ile sorun yaşıyorum.ASP.Net Html.DropDownList Seçili Öğe Seçili değil

takip kişi benzer bir soru (Html.DropDownList in ASP.NET MVC RC (refresh) not pre-selecting item) var ama ben şöyle

Benim Kontrolörü yöntemi arar (bir hata olabilir hariç) cevabı yok:

[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); 
} 

görünümüdür aşağıdaki gibi bir kuvvetle Modeli karşı yazılan

public partial class View : ViewPage<IntegrationContainer> {} 

görünüm şablonunda sorun alanıdır:

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

Bir açılır liste oluşturuyorum, seçili öğe aslında hiçbir zaman seçilmiyor - ve sorun budur. "item.CompanyID" bir Kılavuz, "id" bir Kılavuzdur ve "name", ViewData.Model.Companies örneğinde tutulan IList'te sağlanan şirket nesnesindeki bir dizedir.

Bu aslında bir hata mı? - Neden bunun hala ASP.Net MVC'de bulunduğunu anlamakta zorlanıyorum ... Yaptığım bir şey olsaydı tamamen mutlu olurdum.

Ne de olsa önerilen çalışma ne olurdu?

Teşekkür

cevap

21

O Html.DropDownList aracılığıyla kontrolün adı koleksiyon nesnesi ile aynı adı ise o ASP.Net MVC ile ilgili bir sorun neden olduğu ortaya çıktı.

yüzden aşağıdaki kodu değiştirirseniz:

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

için:

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

şimdi hepsi çalışıyor. Bunun nedeni, modeldeki koleksiyonun adı Model.Companies .... bonker'lardı ... ayrıca, "Şirket" den "şirketlere" olan kontrolün adını değiştirmenin de işe yaramayacağı (sanırım ki).

Modeli değiştirebilirim, ancak çoğu Linq-to-SQL kullanılarak oluşturulduğundan, HTML öğelerinin adlarını değiştirmek daha kolay olduğunu düşünüyorum.

+1

SO üzerinde 6 sorudan sonra arama yaptıktan sonra bu tek cevap ... teşekkürler! – Martin

+0

Sorun değil. :) – Kinlan

+0

Kafamı duvara çarptığında, çok teşekkürler. – aboy021