Используя ASP.NET MVC, я использовал конструктор для создания класса Product и отображения его в сетке DevExpress.
При сохранении изменений в сетке работает следующий метод:
[HttpPost]
public ActionResult ProductGridPartialUpdate([ModelBinder(typeof(DevExpressEditorsBinder))] Product prod)
{
var EditProd = db.Products.Single(p => p.Id == prod.Id);
if (EditProd != null)
{
EditProd.ProductCode = prod.ProductCode;
EditProd.ProductTitle = prod.ProductTitle;
EditProd.BinNo = prod.BinNo;
db.SubmitChanges();
}
var q = from p in db.Products select p;
return PartialView("ProductGridPartial", q);
}
Но из того, что я читал, я думал, что это будет работать примерно так:
[HttpPost]
public ActionResult ProductGridPartialUpdate([ModelBinder(typeof(DevExpressEditorsBinder))] Product prod)
{
db.UpdateProduct(prod);
var q = from p in db.Products select p;
return PartialView("ProductGridPartial", q);
}
Или:
[HttpPost]
public ActionResult ProductGridPartialUpdate([ModelBinder(typeof(DevExpressEditorsBinder))] Product prod)
{
db.SubmitChanges();
var q = from p in db.Products select p;
return PartialView("ProductGridPartial", q);
}
Мой метод - "правильный" способ сделать это, или есть какой-то традиционный способ заставить эти два примера работать? Я вижу в автоматически сгенерированном файле конструктора, он получил следующий кусок кода:
#region Extensibility Method Definitions
partial void OnCreated();
partial void InsertProduct(Product instance);
partial void UpdateProduct(Product instance);
partial void DeleteProduct(Product instance);
#endregion
Но когда я не уверен, что должно быть в частичном методе UpdateProduct, и когда я добавил следующий код в новый файл с именем db.UpdateProduct (prod), я получаю сообщение об ошибке: «недоступен из-за до уровня защиты ". Код, который я пробовал, был:
namespace TradeMeStore.Models
{
partial class TradeMeStoreDataContext
{
partial void UpdateProduct(Product instance)
{
ExecuteDynamicUpdate(instance);
}
}
}