. 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);
}
}
}
第一种方法更可取。这是CRUD操作的常见逻辑:
http://weblogs.asp.net/scottgu/archive/2007/05/19/using linq到sql - - 1.部分aspx
-
检索编辑过的DataItem;
-
编辑DataItem属性;
-
提交更改。
如果您希望实现自定义CRUD功能,您应该自己考虑数据完整性。
由于其保护级别
而不可访问
将" TradeMeStoreDataContext "类和" UpdateProduct "方法都标记为public