2010-09-25 6 views
0

В моей модели, у меня есть:DropDownList в ASP.NET MVC2

public class CustomerModel 
    { 
     public Customer Customer { get; set; } 
     public Language Language { get; set; } 

     public IList<Language> Languages { get; set; } 

     public CustomerModel() 
     { 
      Language = new Language(); 
     } 
    } 

На мой взгляд, у меня есть это:

<%: Html.DropDownList("Id", new SelectList(Model.Languages, "Id", "Code"))%> 

это работа

Но я хотел бы когда я делаю подачу, у меня есть Model.Language.Id, установленный на выбранное значение. Я пробовал, но не работал:

<%: Html.DropDownList(m => m.Language.Id, new SelectList(Model.Languages, "Id", "Code"))%> 

Updat1: Я использовал это решение, хорошо работает

<%: Html.DropDownList("Language", 
new SelectList(ViewData.Model.Languages, "Id", "Code")) %> 

Когда я выбираю клиента, я хотел бы видеть изменение языка в зависимости языка клиента, я сделал это:

<%: Html.DropDownList("Language", new SelectList(ViewData.Model.Languages, "Id", "Code", ViewData.Model.Customer.Language.Id)) %> 

ничего не происходит, я все еще вижу первый язык списка, а не язык клиента. Данные в контроллере правильны

Спасибо,

ответ

0

Это прекрасно работает для меня (вы должны использовать Html.DropDownListFor помощник, если вы хотите передать лямбда-выражение):

Модель:

public class Language 
{ 
    public int Id { get; set; } 
    public string Code { get; set; } 
} 

public class CustomerModel 
{ 
    public Language Language { get; set; } 
    public IList<Language> Languages { get; set; } 

    public CustomerModel() 
    { 
     Language = new Language(); 
     Languages = new List<Language> 
     { 
      new Language { Id = 1, Code = "en" }, 
      new Language { Id = 2, Code = "fr" }, 
     }; 
    } 
} 

контроллер:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(new CustomerModel()); 
    } 

    [HttpPost] 
    public ActionResult Index(CustomerModel model) 
    { 
     return View(model); 
    } 
} 

Вид:

<% using (Html.BeginForm()) { %> 
    <%: Html.DropDownListFor(
     x => x.Language.Id, 
     new SelectList(Model.Languages, "Id", "Code") 
    ) %> 
    <input type="submit" value="OK" /> 
<% } %> 
+0

Я добавил комментарий см "Update1" –

1

использование сильно типизированных HTML помощник DropDownListFor

<%: Html.DropDownListFor(m => m.Language.Id, new SelectList(Model.Languages, "Id", "Code"))%> 
+0

Я добавил комментарий см "Update1" –

+0

ли Model.Languages ​​содержит объект Model.Customer.Language? –

+0

Model.Languages ​​имеет языки (3 в моем случае) Model.Customer.Language не имеет значения null и имеет значение одного из 3 –