MVC3 - UpdateModel... как изменить входящие данные?

UpdateModel завершается сбоем, потому что arcm.Notes в этот метод был пустым, и я хочу, чтобы это была пустая строка.

Может быть, мне нужно обновить ValueProvider (?) После установки Notes на "", чтобы я мог использовать 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 );
}
Другие вопросы по тегам