Я пытаюсь отредактировать запись. У меня есть маршрут по умолчанию.
Когда я нажимаю кнопку отправки, я получаю исключение в строке UpdateModel:
Модель типа «MyProject.Mvc.Models.Product» не может быть обновлена.
На странице проверка поля ProductId вызывает недопустимое значение:
Значение «9» недействительно. 9 является идентификатором записи, которую я пытаюсь отредактировать. Что может быть неправильным?Как обновить с помощью MVC2 RC2
public ActionResult Edit(int id)
{
Product product = productRepository.GetProduct(id);
return View(new ProductFormViewModel(product));
}
[HttpPost]
public ActionResult Edit(int id, FormCollection productFormViewModel)
{
Product product = productRepository.GetProduct(id);
try
{
// TODO: Add update logic here
UpdateModel(product, "Product");
productRepository.Save();
return RedirectToAction("Index");
}
catch (Exception ex)
{
return View(new ProductFormViewModel(product));
}
}
Если изменить модель обновления линию:
UpdateModel(product);
то исключение не выбрасывается, а данные не обновляется в базе данных.
[Редактировать]
Я использую Entity Framework
namespace MyProject.Mvc.Models
{
[MetadataType(typeof(ProductMetaData))]
public partial class Product
{
public Product()
{
// Initialize Product
this.CreateDate = System.DateTime.Now;
}
}
public class ProductMetaData
{
[Required(ErrorMessage = "Product name is required")]
[StringLength(50, ErrorMessage = "Product name must be under 50 characters")]
public object ProductName { get; set; }
[Required(ErrorMessage = "Description is required")]
public object Description { get; set; }
}
public class ProductFormViewModel
{
public Product Product { get; private set; }
public ProductFormViewModel()
{
Product = new Product();
}
public ProductFormViewModel(Product product)
{
Product = product;
}
}
}
Я использую NerdDinner в качестве проводника. – Picflight
Проблема заключается в редактировании вида, <% @ Page Title = "" Language = "C#" MasterPageFile = "~/Views/Shared/Site.Master" Inherits = "System.Web.Mvc.ViewPage "%> Если я пройду в модели View ModelFormViewModel, она не обновляется, но если я изменю ее на <% @ Page Title =" "Язык =" C# "MasterPageFile =" ~/Views/Shared/Site.Master "Inherits =" System.Web.Mvc.ViewPage "%> обновляется. –
Picflight