У меня проблема с TryUpdateModel в MVC3
Когда запущено редактирование (публикация), у меня есть следующий код:
public ActionResult Edit(int id, FormCollection collection)
{
var review = FoodDB.FindByID(id);
if (TryUpdateModel(review))
return RedirectToAction("Index");
return View(review);
}
Представление создается непосредственно VS(поэтому не изменено мной) Если я отслеживаю код, я вижу новые значения в FormCollection, но после выполнения TryUpdateModel возвращает true, не выдает никакой ошибки, но объект обзора не обновляется.
Что я могу сделать не так?
РЕДАКТИРОВАТЬ
Я придумываю еще некоторые детали: во-первых, БД - это не реальная БД, а просто "симуляция"- класс с одним статическим родовым списком.
List<Review> Review;
Класс обзора - это просто POCO, как показано ниже:
public class Review
{
public string Message { get; set; }
public DateTime Created { get; set; }
public int ID { get; set; }
public int Rating { get; set; }
}
Представление строго типизировано, сгенерировано VS из метода Editконтроллер.Поля определены следующим образом:
<div class="editor-label">
@Html.LabelFor(model => model.Message)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Message)
@Html.ValidationMessageFor(model => model.Message)
</div>
@Html.HiddenFor(model => model.ID)
<div class="editor-label">
@Html.LabelFor(model => model.Rating)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Rating)
@Html.ValidationMessageFor(model => model.Rating)
</div>
Вызов var review = FoodDB.FindByID(id);
возвращает объект обзора
Даже если TryUpdateModel(review)
не работает (я прослеживаю код и проверял объект обзора до ипосле вызова, а также collection
, и он получает правильные значения), но объект review
не обновляется.
Однако я заменил его собственным рукописным методом, как показано ниже, и в этом случае объект обзора обновляется:
private void MyTryUpdateModel(Review review, FormCollection collection)
{
review.Message = collection["Message"];
review.Rating = int.Parse(collection["Rating"]);
}
Так что TryUpdateMethod ДОЛЖЕН найти подходящие поля в коллекции для обновления, как я понимаю.
Итак, что может быть не так?
Спасибо всем