Как правильно использовать (Try)UpdateModel?
Когда я запускаю это:
TryUpdateModel
возвращает истину,ViewData
ошибок нет,- но мой
Proxy
не обновляется.
Метод действия
public void Save(string TypeName, int Id, FormCollection idontknow) {
var types = Assembly.GetExecutingAssembly().GetTypes();
var ObjectType=(from t in types where t.Name == TypeName select t).First();
var Proxy = context.Set(ObjectType).Find(Id); // EF 4.1
if (TryUpdateModel(Proxy, TypeName)) {
var x = ViewData.GetModelStateErrors(); // no errors
}
}
Размещенные данные
TypeName=Thing&Id=1&Thing.Id=1&Thing.Name=hello&Thing.OptionID=2
Класс вещей
public class Thing : Base {
public virtual Nullable<int> OptionID { get; set; }
public virtual Option Option { get; set; }
public virtual ICollection<ListItem> ListItems { get; set; }
}
public class Base {
public virtual int Id { get; set; }
public virtual string Name { get; set; }
[NotMapped]
public virtual int? EntityState { get; set; }
}
EDIT: я также пытался явно передать коллекцию форм TryUpdateModel(Proxy, TypeName, idontknow)
EDIT #2: (в ответ на NickLarsen)
- Перезапустил VS и сервер, без изменений.
- Значения фактически находятся в FormCollection.
- Мок данные работают! Я знаю, что, должно быть, здесь что-то напутал.
- Использование отладчика для проверки значений.