ASP.NET MVC UpdateModel 不工作(使用 Devexpress)
Posted
技术标签:
【中文标题】ASP.NET MVC UpdateModel 不工作(使用 Devexpress)【英文标题】:ASP.NET MVC UpdateModel is not working (with Devexpress) 【发布时间】:2018-12-26 05:51:30 【问题描述】:我创建了一个视图、实体模型和 Devexpress Grid 扩展。 Devexpress 已自行生成代码。但是 UpdateModal 函数不适用于类中的控制器函数。 抛出“'Models.Birim' 类型的模型无法更新。”错误文本。
我的代码:
[HttpPost, ValidateInput(false)]
public ActionResult MagazaGridPartialUpdate([ModelBinder(typeof(DevExpressEditorsBinder))] Models.Birim item)
var model = db.Birim;
if (ModelState.IsValid)
try
var modelItem = model.FirstOrDefault(it => it.id == item.id);
if (modelItem != null)
this.UpdateModel(modelItem);
db.SaveChanges();
catch (Exception e)
ViewData["EditError"] = e.Message;
else
ViewData["EditError"] = "Please, correct all errors.";
return PartialView("_MagazaGridPartial", model.ToList());
它可以实现我的工作理念吗?
【问题讨论】:
嗨,我搜索这个问题的解决方案 24 小时。但我找到了解决方案。仅适用于 Devexpress devexpress.com/Support/Center/Question/Details/T204240/… 添加 Application_Start() ModelBinders.Binders.DefaultBinder = new DevExpressEditorsBinder(); 您应该将您的评论作为答案发布并接受答案。 我怎样才能检查我的帖子是否已完成:D 我看到你没有这样做的权限。然后我会将您的评论作为答案发布,您可以接受。好吗? 好吧,我在等你 【参考方案1】:正如 orçun 已经指出的,DevExpress 支持在 DevExpress 论坛中提供了必要的步骤。
引用DevExpress forum:
为了正确应用我们控件的发布数据,我们的 应该使用 DevExpressEditorsBinder。 UpdateModel 方法确实 不使用在动作的 ModelBinder 属性中指定的活页夹 方法。必须将其指定为默认活页夹。
protected void Application_Start()
...
ModelBinders.Binders.DefaultBinder = new DevExpressEditorsBinder();
如果你不想要这个,你可以从“item”中获取新的值 GridViewPartialUpdate 动作方法的参数:
modelItem.LoginUsuario = item.LoginUsuario;
modelItem.Nome = item.Nome;
modelItem.Email = item.Email;
modelItem.Ativo = item.Ativo;
【讨论】:
以上是关于ASP.NET MVC UpdateModel 不工作(使用 Devexpress)的主要内容,如果未能解决你的问题,请参考以下文章
MVC3 - UpdateModel ...如何更改传入数据?
MVC2 在 UpdateModel() 中抛出 InvalidOperationException,试图更新 id 字段