c# - obligatoria - Ver no actualizar después de la publicación
crear un actualizador en c# (3)
Tengo un método de controlador, CreateOrUpdate, se supone que este método guarda el auto en la base de datos y luego regresa normalmente.
public ActionResult CreateOrUpdate(int ID = 0)
{
Car car = new Car(ID);
}
[HttpPost]
public ActionResult CreateOrUpdate(Car car)
{
car.Save();
return View(car);
}
En el método theCar.Save (), configuro el id para el auto, con lo que sea que el id estará en la base de datos después de que se guarde el auto (al hacer una inserción, uso SCOPE_IDENTITY (), el método para guardar funciona bien, y si Debug y observo los valores para el automóvil después de llamar a Save (), la ID es correcta, pero cuando la Vista se muestra, la ID es 0 en la vista.
¿Alguien podría ayudarme y decirme por qué sucedería esto? ¿No se supone que debo cambiar el modelo para la vista en el método HTTP POST? En caso de que prefiero redirigir al método original CreateOrUpdate () si el guardado se realizó correctamente.
No quería borrar el ModelState porque necesitaba mostrar los errores, así que fui con
ValueProviderResult vpr = new ValueProviderResult("", null, System.Globalization.CultureInfo.CurrentCulture);
ModelState["id"].Value = vpr;
debería ser el problema ModelState si utiliza Htmlhelper para mostrar el valor de id. El valor predeterminado de HtmlHelper muestra ModelState no Model. Intente mostrar el valor del modelo en la vista
<td>
@Model.id
</td>
o Limpie el Valor ModelState en el controlador
ModelState.Clear();
o restablecer el valor de id después de SaveChange.
theCar.Save();
ModelState["id"].Value = theCar.id
return View(theCar);
Restablecer el valor de área de texto después del envío del formulario
ModelState.Clear()
a mi método HttpPost Controller, como se ve en esta publicación. Los helpers Html obtienen datos del estado del modelo y no del modelo si devuelves la misma vista después de la publicación del formulario. para obtener datos actualizados en la vista use el patrón de obtención de redirección de correos o ModelState.Clear () y solucionó el problema.
Gracias