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. обратите внимание на один обходной путь здесь:
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 );
}