tengo un Create-Vista así ...Cómo deshabilitar la validación en una acción HttpPost en ASP.NET MVC 3?
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")"
type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"
type="text/javascript"></script>
@using (Html.BeginForm())
{
@Html.ValidationSummary(null, new { @class = "validation" })
...
<input class="cancel" type="submit" value="OK" />
...
<input name="submit" type="submit" value="Save" />
}
... y una correspondiente acción del controlador:
[HttpPost]
public ActionResult Create(string submit, MyViewModel myViewModel)
{
if (submit != null) // true, if "Save" button has been clicked
{
if (ModelState.IsValid)
{
// save model data
return RedirectToAction("Index");
}
}
else // if "OK" button has been clicked
{
// Disable somehow validation here so that
// no validation errors are displayed in ValidationSummary
}
// prepare some data in myViewModel ...
return View(myViewModel); // ... and display page again
}
He descubierto que puedo deshabilitar la validación del lado del cliente mediante el establecimiento de class="cancel"
en el botón "Aceptar". Esto funciona bien
Sin embargo, la validación del lado del servidor todavía ocurre. ¿Hay alguna manera de desactivarlo en una acción de controlador (ver el bloque else en la acción Crear anterior)?
¡Gracias por la ayuda!
Es la misma vista fuertemente tipada, por lo que creo que no puedo usar otro ViewModel. – Slauma
@Slauma eso no es todo el caso. Tiene una vista individual, que usa el Modelo X que probablemente tiene todos sus atributos de validación. Puede crear el Modelo Y en el que copie y pegue el Modelo X y elimine todos los atributos de validación. En este punto, necesita tener 2 acciones de publicación de formulario separadas. Entonces crea (X) y TempSave (Y). Al final de TempSave (Y), o bien desearía redirigir a la acción original (si puede cargar los datos de guardado temporal) o tendría que devolver View (X), que puede hacer fácilmente que Y sea una X mediante el uso de mapeo de frameworks como ValueInjecter. –
Podría enlazar javascript al botón de envío que cambiaría el destino del formulario de TempWave a Create. –