/ / Anotácie údajov nefungujú, jquery nenápadné overenie v Čiastočnej ASP.NET MVC - javascript, jquery, asp.net-mvc, asp.net-mvc-4, validácia

Anotácie údajov nefungujú jquery nenápadné overenie v Čiastkovej ASP.NET MVC - javascript, jquery, asp.net-mvc, asp.net-mvc-4, validácia

Preto sa snažím použiť nasledujúce údaje o anotáciách:

    [Required(ErrorMessage = "A Description Is Required.")]
[StringLength(500, ErrorMessage = "The Description must be at least {2} characters long.", MinimumLength = 2)]
public string description { get; set; }

DataAnnotations zaplňujú atribúty údajov v mojom <input /> element odpoveď na klienta pre môj popis vlastnosti:

<input maxlength="500" class="form-control" data-val="true" data-val-length="The Description must be at least 2 characters long." data-val-length-max="500" data-val-length-min="2" data-val-required="A Description Is Required." id="Add_description" name="Add.description" required="required" type="text" value="">

Odkazujem na knižnice skriptov / js:

jQuery Validation Plugin 1.13.1
Microsoft jQuery Unobtrusive Validation 3.2.2
Microsoft jQuery Unobtrusive Ajax 3.2.2

Nie som si istý, či potrebujem knižnicu Microsoft jQuery Unobstrusive Ajax, ale prečítal som si ju odpoveď pretože sa tiež pokúšam o overenie rozsahu, ktoré nefunguje, ale zameriavam sa na požadovanú správu pre svoju vlastnosť popisu pre túto otázku, aby bola jednoduchá.

Tu je môj zobrazovací kód (prosím pochopte môjBootstrap modal je HTML syntakticky správny. Práve som vylúčil niektoré z mojich prvkov HTML pre modus Bootstrap, aby bol kód ľahšie čitateľný pre moju otázku):

    @using (Html.BeginForm("CustomFieldAddNew", "CustomField", null, FormMethod.Post, new { @role = "form", id = "CustomFieldAddForm", enctype = "multipart/form-data" }))
{
@Html.HiddenFor(mi => mi.Add.custom_field_context_id)

<div class="modal-body">

<div class="table-responsive">
<table class="table table-striped table-bordered">
<thead>
<tr>
<th colspan="2">General Information </th>
</tr>
</thead>
<tbody>
<tr>
<td>
<label for="">Description<i class="icon-asterisk"></i></label>
</td>
<td>
<div class="col-md-8 padding-0">
@Html.TextBoxFor(mi => mi.Add.description, new { @class = "form-control", @MaxLength = "500", required = "required" })
@Html.ValidationMessageFor(mi => mi.Add.description)
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- /.modal-body -->
<div class="modal-footer">
<button id="btnCloseSaveModal" type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button id="btnCustomFieldSave" type="button" class="btn btn-primary">Save</button>
</div>
}

<script>
$("#btnCustomFieldSave").on("click", function () {
var $form = $(this).parents("form");

var postData = {
description: $("#@Html.IdFor(mi => mi.Add.description)").val()
}

if ($form.validate().form()) {//fire jQuery validation
$.ajax({
type: "POST",
url: $form.attr("action"),
contentType:"application/json",
data: JSON.stringify(postData),
error: function (xhr, status, error) {
toastr.error("Error saving, please try again.");
},
success: function (data) {
$("#customField").modal("toggle");
$form.trigger("reset");
}
});
}

return false;
});
});
</script>

V mojej správe o overení na strane klienta by sa malo uvádzať:

"A Description Is Required."

Ale namiesto toho, keď kliknem btnCustomFieldSave, a moje jQuery CLICK Spustí sa funkcia poslucháča a volá $ form.validate () chybové hlásenie o overení znie „Toto pole je povinné.“ Toto je predvolená správa v knižnici jQuery Validation Plugin 1.13.1.

Moja otázka znie, prečo sa moja správa DataAnnotation „Vyžaduje sa opis“ nezobrazuje namiesto správy o konzervatívnom overení jQuery, ktorá je súčasťou správy „Toto pole je povinné“

Nezabudnite, či uvediem riadok @Html.ValidationMessageFor(mi => mi.Add.description) alebo nie. Stále sa mi zobrazuje „Toto pole je povinné“ namiesto mojej vlastnej správy definovanej v atribúte DataAnnotation Required čo je „Vyžaduje sa opis“

odpovede:

4 pre odpoveď č. 1

Takže Microsoft jQuery Unobtrusive Validation už spustil svoju analýzu a viazal sa na dátové attrusy pred načítaním môjho obsahu časti formulára.

Musel som znova nechať analyzovať Microsoft jQuery Nonobtrusive Validation parse fire, takže v dolnej časti môjho Partial som pridal:

$(function () {
//Microsoft Unobtrusive jQuery validation has already binded so must kick off parse to bind partial loaded dynamic form
$.validator.unobtrusive.parse($("#CustomFieldAddForm"));
});

Našiel som odpoveď tu: Anotácie / Validácia údajov nefungujú pre čiastočné zobrazenia