2012-04-15 4 views
4

У меня есть следующий шаблон редактора под названием «DropDown.cshtml». Часть list отлично работает, и в шаблоне используется какое-то вуду, которое я сделал, чтобы получить нужный SelectList от ViewData. Контроллер помещает все избранные списки в модель просмотра в ViewData, и нет ничего плохого в списке вещей.Почему DropDownListFor не распознает выбранное значение в моем шаблоне редактора?

@{ 
    var list = this.GetModelSelectList(); 
} 
@Html.DropDownListFor(m => Model, list) 

Я использую этот шаблон на ключевые свойства зарубежных вид модели, как это:

[Required] 
[UIHint("DropDown", "MVC", "SelectListName", "JobLevelSelectList")] 
[Display(Name = "Job Level")] 
public Guid? JobLevelId { get; set; } 

public SelectList JobLevelSelectList { get; set; } 

В контроллере, JobLevelId имеет правильное значение непосредственно перед выполнением зрения, но ни один элемент не выбран в rendered select элемент. или, вернее, первый элемент в списке выбора всегда выбирается.

Почему DropDownListFor игнорирует значение свойства при использовании в моем шаблоне редактора и все же отлично работает при вызове напрямую?

+0

см. Http://stackoverflow.com/questions/10039006/mvc-dropdownlist-selectedvalue-not-displaying-correctly – RickAndMSFT

+0

@RickAndMSFT, я ничего не вижу в этом вопросе или его ответах, которые действительно применимы здесь. Принятый ответ заключается в том, что свойство модели в лямбда 'DropDownListFor' перезаписывает выбранный id * выбранного списка. Это не помогает мне с моей проблемой «lambda value» игнорироваться только в моем шаблоне редактора, а не в моих сырых DDL. – ProfK

+1

Я бы не удивился, если 'ExpressionHelper.GetExpressionText()' (который используется помощниками для поиска имен свойств) не работает с 'm => Model'. – bhamlin

ответ

3

Это, к сожалению, a known bug в MVC3 (я не пробовал в бета-версии MVC 4, чтобы проверить, исправлено ли это).

Работа, которую я использовал, заключается в том, чтобы вручную установить свойство Selected соответственно в коллекции, к которой привязан DropDownListFor, но это не идеально, но это сработало.

+0

Спасибо. чтобы увидеть, могу ли я сделать это обходное решение внутри моего шаблона редактора. – ProfK

Смежные вопросы