asp.mvc3 @ Html.DropDownListFor <> работает неправильно - PullRequest
0 голосов
/ 27 октября 2011

У меня странная проблема с выпадающим списком в ASP.MVC3.У меня есть модель вида, которая выглядит следующим образом:

public class dto{
  [Key]
  public Int32 ClientID { get; set; }
  [Required, MaxLength(50)]
  public Name{get;set;}

  public int ClientTypeID { get; set; }

  public SelectList ClientTypes { get; set; }
}

Использование бритвы:

<div class="editor-label">
    @Html.LabelFor(model => model.ClientTypeID)
</div>
<div class="editor-field">
    @Html.DropDownListFor(x => x.ClientTypeID,Model.ClientTypes)
</div>

В контроллере я заполняю типы ClientTypes данными.Когда я использую его для создания нового объекта dto, он работает нормально, а выбор передается обратно в контроллер и сохраняется.Он также отлично работает, когда я использую его для редактирования существующего объекта, при открытии страницы выбирается правильное значение.

Проблема в том, что при изменении выбора он не публикуется обратно в контроллер, а другиеотредактированные значения возвращаются правильно.

Кто-нибудь может указать мне направление проблемы?

спасибо.

1 Ответ

0 голосов
/ 27 октября 2011

Итак, в моем коде я делаю что-то вроде этого - во ViewModel у меня есть IEnumerable:

public IEnumerable<Choice> Choices { get; set; }

, который возвращается в действие контроллера.

и Choice выглядит примерно так:

public class Choice
{
   public int Id { get; set; }
   public string Text { get; set; }
}

и в моей ViewModel у меня также есть член, который выглядит так:

public int TheChoice { get; set; }

и затем, на мой взгляд, у меня есть нечто, похожее на это:

@Html.DropDownListFor(model => model.TheChoice, new SelectList(Model.Choices, "Id", "Text", @Model.TheChoice))

и это, кажется, работает очень хорошо.

Вы делаете что-то по-другому, что это?

...