MVC3 - UpdateModel ...如何更改传入数据?

Posted

技术标签:

【中文标题】MVC3 - UpdateModel ...如何更改传入数据?【英文标题】:MVC3 - UpdateModel... how to change incoming data? 【发布时间】:2011-12-19 04:24:45 【问题描述】:

UpdateModel 失败,因为 arcm.Notes 进入此方法时为 null,我希望它为空字符串。

也许我需要在将 Notes 设置为 "" 后刷新 ValueProvider (?),这样我才能使用 UpdateModel。

 public ActionResult Edit1(Guid id, ActivityResponseConsumerMobile arcm) 
        if (arcm.Notes == null)
            arcm.Notes = "";

        if (!ModelState.IsValid) 
            SetupDropDowns();
            return View(arcm);
        

        ActivityResponseConsumerMobile arcmDb = uow.ActivityResponseConsumerMobiles.Single(a => a.Id == id);
        try 
            UpdateModel(arcmDb, null, null, new[]  "Id" );

【问题讨论】:

【参考方案1】:

这是我相信自 MVC2 以来的默认行为。 请注意这里的一种解决方法:

http://brianreiter.org/2010/09/16/asp-net-mvc-2-0-undocumented-model-string-property-breaking-change/

public sealed class EmptyStringModelBinder : DefaultModelBinder public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) bindingContext.ModelMetadata.ConvertEmptyStringToNull = false; return base.BindModel(controllerContext, bindingContext);

并注册活页夹

protected void Application_Start() ModelBinders.Binders.DefaultBinder = new EmptyStringModelBinder(); RegisterRoutes( RouteTable.Routes );

【讨论】:

以上是关于MVC3 - UpdateModel ...如何更改传入数据?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC UpdateModel 不工作(使用 Devexpress)

update thinkpad bios和updatemodel number选哪个

ASP.NET MVC 下UpdateModel可空未填写的参数为Null,为何不是空字符串

MVC3 应用架构——如何存储数据

如何在 MVC3 中使用 https 生成绝对 URL?

MVC3 Razor 和 Modal 弹出窗口