vista una tutorial mvc multiples modelos modelo form controlador asp.net-mvc-3 client-side-validation unobtrusive-validation

asp.net-mvc-3 - una - mvc submit button action



.Net Mvc 3 Trigger(que no sea el botón de enviar) Validación no intrusiva (2)

Validación manual de mensajes personalizados inyectados directamente en HTML

@{using (Html.BeginForm("addBuyOnlinepostA", "BuyOnline", FormMethod.Post, new { @enctype = "multipart/form-data", @id = "form1" })) { @Html.ValidationSummary(true) <div class="row"> <div class="col-sm-10"> Product Qty <input class="inputs" required type="number" id="price" name="price" placeholder="Enter Price in AED" data-val="true" data-val-required="Please enter a value" data-val-regex="Please enter a valid number." data-val-regex-pattern="/d{1,20}" /> <span class="field-validation-valid" data-valmsg-for="price" data-valmsg-replace="true" style="color: Red;"></span> </div> </div> <input type="button" onclick="$(''form'').valid()" /> } }

Lo que me gustaría

Me gustaría activar la validación del lado del cliente en mi vista con un evento de mi elección. Podría ser ''onblur'' tal vez otro botón pero algo más que el botón de enviar.

Enlaces relevantes

Cómo activar la validación sin usar un botón de envío

Aplicación de validación de jquery discreta al contenido dinámico en ASP.Net MVC

Lo que he intentado

Dado un oyente de varios eventos, disparé los siguientes métodos sin suerte:

$(selector).validate();

$(selector).valid();

$.validator.unobtrusive.parseDynamicContent(selector);

$.validator.unobtrusive.parse($(selector));

Resumen

Entonces, necesito la validación del lado del cliente para disparar en un evento dado (que no sea en el envío) y mostrar los mensajes de validación correspondientes. No creo que ninguna de las sintaxis de Markup / Razor sea necesaria ya que los fuegos de validación del cliente en el envío y todos los mensajes de validación correspondientes se muestran como se esperaba.


$(''form'').valid() debería funcionar. Vamos a ejemplificar.

Modelo:

public class MyViewModel { [Required] public string Foo { get; set; } }

Controlador:

public class HomeController : Controller { public ActionResult Index() { return View(new MyViewModel()); } }

Ver:

@model MyViewModel <script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script> @using (Html.BeginForm()) { @Html.LabelFor(x => x.Foo) @Html.EditorFor(x => x.Foo) @Html.ValidationMessageFor(x => x.Foo) } <div id="validate">Hover here to trigger validation</div> <script type="text/javascript"> $(''#validate'').hover(function () { $(''form'').valid(); }); </script>