Я недавно обнаружил, что если я сказал:
object latestPosts = new MyApp.Models.LatestPosts();
TryUpdateModel(latestPosts);
Объект latestPosts не обновляется.Это связано с обнаруженной проблемой здесь .Использование обходного пути решило проблему.Однако, если я перемещаю latestPosts в свойство (называемое параметрами) существующего типа (например, Widget), это не обновляет модель.Например,
var widget = new Widget();
MyTryUpdateModel(widget, "Widget", null, null, ValueProvider); // LatestPosts doesn't update
Но работает следующее:
MyTryUpdateModel(widget.Parameters, "Widget.Parameters", null, null, ValueProvider);
Редактировать: Вот класс Widget:
public class Widget {
[Required, StringLength(100)]
public virtual string Name { get; set; }
private object _parameters;
public virtual object Parameters {
get {
// Code removed for brevity
if (_parameters == null)
_parameters = new MyApp.Models.LatestPosts();
return _parameters;
} set { _parameters = value; }
}
}
А вот класс LatestPosts:
public class LatestPosts {
public int NumPosts { get; set; }
}
Я не могу понять, почему начальная MyTryUpdateModel не работала для обновления всего виджета, поскольку он должен обрабатывать сложные типы.Буду признателен, если кто-нибудь сможет пролить свет на этот вопрос.
Спасибо