2010-01-18 9 views
8

kullanarak C# mvc'de seçili öğeleri göstermeyen çok satırlı liste Seçili öğeleri çok şanslı listeye şanssız olarak iletmek için birçok farklı yöntem denedim. Sonunda, tüm öğeleri seçili olarak görüntülemesi gerektiğini düşündüğüm ve hala listede hiçbir şey seçilmediğini denedim. SubcontractRepository.cs içindeLinki2sql

public MultiSelectList Companies { get; private set; } 

Companies = MulitSelectList(subcontractRepository.SubcontractCompanies(Subcontract.subcontract_id), "Value", "Text"); 

:

public IEnumerable<SelectListItem> SubcontractCompanies(Guid id) 
{ 
    return c in db.companies 
    select new SelectListItem 
    { 
      Text = c.company_name, 
      Value = c.company_id.ToString(), 
      Selected = true 
    } 
} 

Görünüm: - Seçilen öğeleri

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

Hangi mvc sürümünü kullanıyorsunuz? Görünümdeki alan adı Model.FieldName ile eşleşiyor mu? –

+0

1.0 İsimler aynı. Listeyi görüyorum, seçtiği hiçbir şey yok. – RememberME

cevap

8

Sorunu burada keşfettiniz. MultiSelectList, ListBox'tan farklı bir ada sahip olmalıdır. Bu değişikliği yaptı ve şimdi kodun her iki sürümü de çalışıyor.

+0

+1 Sadece bunu anlamaya çalışırken bana bir sürü acı kazandı !!!! :-) – klabranche

2

MultiSelectList yapıcı dördüncü parametre vardır. kullanın:

http://msdn.microsoft.com/en-us/library/system.web.mvc.multiselectlist.multiselectlist.aspx

kullanın bu kodu:

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

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

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

İşe yarıyor mu?

+0

Bunu yapmanın ilk yolu buydu. Ben de işe yaramadı. Umarım yukarıda neyin yanlış olduğunu anlarsam, yanlış yaptığımı keşfedebilirdim. – RememberME

+0

Yani yanlış bir şey yaptınız. 'C.company_id' dizgiye dönüştürmeyin. Bu gerekli değildir. – LukLed

+0

Biliyorum yanlış bir şey yaptım. Ne olduğunu öğrenmeye çalışıyorum. .ToString() elimde olmadığında, "System.Guid 'türünün' string 'türüne dolaylı olarak dönüştürülemez" – RememberME