Я получаю следующую ошибку в DropDownListFor()
" Дерево выражений может не содержать динамическую операцию ", потому что лямбда использует динамический тип.
Как установить выбранныйопция в DropDownList без обращения к jQuery?
Я бы тоже не стал делать шаблон или пользовательский помощник.
Модель
public class Thing : Base {
public virtual Nullable<int> OptionID { get; set; }
public virtual Option Option { get; set; }
}
public class Option : Base {
public virtual ICollection<Thing> Things { get; set; }
}
public class Base {
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
Контроллер
public ActionResult Edit(int Id) {
return View(new ViewModel(context, new Thing()));
}
Просмотр
@model MvcApp7.Models.ViewModel
@{
var Entity = (dynamic)Model.Entity;
}
@Html.DropDownListFor(x => Entity.OptionID , (System.Web.Mvc.SelectList)Model.Options)
ViewModel
public class ViewModel {
public ViewModel(Context context, object entity) {
this.Entity = entity;
this.Options = new SelectList(context.Options, "Id", "Name");
}
public dynamic Entity { get; set; }
public SelectList Options { get; set; }
}
РЕДАКТИРОВАТЬ : Пожалуйста, извините.Я забыл, что могу указать выбранную опцию в самом списке SelectList.Я перенес ответственность в ViewModel и постараюсь справиться с этим оттуда.Тем не менее, было бы хорошо знать, как обойти это в самом View, если это было необходимо.
Я сделал это в ViewModel
this.Options = new SelectList(context.Options, "Id", "Name", this.Entity.OptionID);
и это в View
@Html.DropDownList("OptionID", Model.Options)