Utilizzare la convalida ASP.NET MVC con jquery ajax?

2022-06-01 14:00:18

Ho una semplice azione ASP.NET MVC come questa:

public ActionResult Edit(EditPostViewModel data)
{

}

I EditPostViewModel hanno attributi di convalida come questo:

[Display(Name = "...", Description = "...")]
[StringLength(100, MinimumLength = 3, ErrorMessage = "...")]
[Required()]
public string Title { get; set; }

Nella vista sto usando i seguenti aiutanti:

 @Html.LabelFor(Model => Model.EditPostViewModel.Title, true)

 @Html.TextBoxFor(Model => Model.EditPostViewModel.Title, 
                        new { @class = "tb1", @Style = "width:400px;" })

Se eseguo un invio su un modulo, questa casella di testo viene inserita in una convalida verrà eseguita prima sul client e poi sul servizio(ModelState.IsValid).

Ora ho un paio di domande:

  1. Può essere usato invece con jQuery ajax submit? Quello che sto facendo è semplicemente rimuovere il modulo e facendo clic sul pulsante di invio un javascript raccoglierà i dati e quindi eseguirà $.ajax.

  2. Il lato server ModelState.IsValid funzionerà?

  3. Come posso inoltrare il problema di convalida al client e presentarlo come se stessi utilizzando la convalida int build(@Html.ValidationSummary(true))?

Esempio di chiamata 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');
        }
    });
}

Modifica 1:

Incluso nella pagina:

<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>

- Ivy

Source
Risposta


124