Tengo una acción simple de ASP.NET MVC como esta:
public ActionResult Edit(EditPostViewModel data)
{
}
El EditPostViewModel
tener los atributos de validación de esta manera:
[Display(Name = "...", Description = "...")]
[StringLength(100, MinimumLength = 3, ErrorMessage = "...")]
[Required()]
public string Title { get; set; }
En la vista, estoy usando los siguientes ayudantes:
@Html.LabelFor(Model => Model.EditPostViewModel.Title, true)
@Html.TextBoxFor(Model => Model.EditPostViewModel.Title,
new { @class = "tb1", @Style = "width:400px;" })
Si hago un envío en un formulario que este cuadro de texto se coloca en una validación se realizará primero en el cliente y luego en el servicio ( ModelState.IsValid
).
Ahora tengo un par de preguntas:
¿Se puede usar esto con jQuery ajax submit en su lugar? Lo que estoy haciendo es simplemente eliminar el formulario y al hacer clic en el botón enviar, un javascript recopilará datos y luego ejecutará el archivo
$.ajax
.¿Funcionará el lado del servidor
ModelState.IsValid
?¿Cómo puedo reenviar el problema de validación al cliente y presentarlo como si estuviera usando build int validation (
@Html.ValidationSummary(true)
)?
Ejemplo de llamada Ajax:
function SendPost(actionPath) {
$.ajax({
url: actionPath,
type: 'POST',
dataType: 'json',
data:
{
Text: $('#EditPostViewModel_Text').val(),
Title: $('#EditPostViewModel_Title').val()
},
success: function (data) {
alert('success');
},
error: function () {
alert('error');
}
});
}
Edición 1:
Incluido en la página:
<script src="/Scripts/jquery-1.7.1.min.js"></script>
<script src="/Scripts/jquery.validate.min.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js"></script>