soy nuevo en el asp.net mvc y he aforma con algunos de validación y quiero validar el lado del cliente, por lo que escribo normal script en javascript
para ser más specefic mi problema era el return false ( como no debe enviar los datos al servidor y aún en apage pero esto no suceda) ,nota : puedo probar la secuencia de comandos en el archivo html normal con js y funciona bien
pero como ya he dicho, no estoy familiarizado con mvc, así que quiero saber si hay cualquier cosa que me he perdido a trabajar en ella y si hay alguna referencia a cualquier toturial en este specefic punto sería bueno , como he visto en este lugar ( no hay lugar para los principiantes :);
este es un fragmento de mi código también

@model registerationex.Models.register
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
@using (Html.BeginForm()) {
@Html.ValidationSummary(false)
<fieldset>
<legend>register</legend>
<div class="editor-label">
@Html.LabelFor(model => model.name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.name)
<span id="error"></span>
@Html.ValidationMessageFor(model => model.name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.email)
</div>
<div class="editor-field">
<input class="text-box single-line" data-val="true" data-val-required="The email field is required." id="email" name="email" type="text" value="" onblur="checkuser(email);">      
<span id="erroruser"></span>
@Html.ValidationMessageFor(model => model.email)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.age)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.age)
<span id="errorage"></span>
@Html.ValidationMessageFor(model => model.age)
</div>
<p>
<input type="submit" value="Create" onclick="allvalidate();"  />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
<script>
function allvalidate() {
var validated = true;
if (!validate()) validated = false;
if (!checkAge(age)) validated = false;
if (!checkuser(email)) validated = false;
return validated;
}
function validate() {
var txtf = document.getElementById('name');
if (txtf.value == 0 || txtf.value == null) {
document.getElementById('error').innerText = ('you must enter firstname');
document.getElementById('error').style.color = 'red';
txtf.focus();
return false;
}
else {
document.getElementById('error').innerText = ('');
return true;
}
}
function checkAge(input) {
if (input.value < 18 || input.value > 70) {
document.getElementById('errorage').innerText = ('age must be from 18 :70');
document.getElementById('errorage').style.color = 'red';
return false;
}
else {
document.getElementById('errorage').innerText = ('');
return true;
}
}
function checkuser(input) {
var pattern = '^[a-zA-Z]+$';
if (input.value.match(pattern)) {
document.getElementById('erroruser').innerText = '';
return true;
}
else {
document.getElementById('erroruser').innerText = ('enter valid email');
document.getElementById('erroruser').style.color = 'red';
return false;
}
}
</script>
InformationsquelleAutor user4833581 | 2015-05-07

2 Comentarios

  1. 3

    Se han incluido @Scripts.Render("~/bundles/jqueryval") que, por defecto,jquery.validate.unobtrusive.js, para eliminar todas las secuencias de comandos y hacer uso de las características que vienen con MVC. Simplemente añadir los atributos de validación de sus propiedades.

    [Required(ErrorMessage = "you must enter firstname")]
    public string name { get; set; }
    [EmailAddress(ErrorMessage = "enter valid email")]
    public string email { get; set; }
    [Required(ErrorMessage = "you must your age")]
    [Range(18, 70, ErrorMessage = "age must be from 18 : 70")]
    public int age { get; set; }

    Ahora todo lo que sus guiones están tratando de hacer (mal) se realiza fuera de la caja (suponiendo que no haya movilidad discreta de validación) y el formulario no presentar hasta que se corrijan los errores. También ahora obtener la validación del lado del servidor, que es el esencial de validación (validación del lado del cliente es sólo un buen bono, pero cualquier persona puede fácilmente pasar) así que usted debe siempre validar en el servidor

    También sustituir manual intento de crear una entrada para la propiedad de correo electrónico con @Html.EditorFor(m => m.email) y eliminar todos los onclick attibutes

    Lado nota: regex ^[a-zA-Z]+$ no permiten incluso una dirección de correo electrónico válida para ser introducidas (incluso no permitir que el @ o . caracteres!). El uso de la EmailAddress] atributo, se generará la correcta expresión de lo que es (de jQuery Validation 1.9.0)

    ^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$
    • gracias por tu respuesta y rebota demasiado , sólo quiero saber algo de ti . sé que el servidor de validación no es opcional por lo que quiero añadir un lado del cliente, además de aumentar el rendimiento al disminuir el conectar con el servidor por lo que si he utilizado el mvc atributos en el modelo ( es este un trabajo de validación en el servidor o en el cliente) y gracias por patrón de correo electrónico de aviso ,tenga en cuenta que esto es sólo atask saber acerca de la validación y quiero escribir patrón simple para aceptar sólo palabras y lo nombró como el correo electrónico sólo @Stephen Muecke
    • En primer lugar, si usted ha incluido a las secuencias de comandos necesarios (jquery-{version}.js, jquery.validate.js y jquery.validate.unobtrusive.js) y no ha deshabilitado la validación del lado del cliente, por lo que recibirá tanto del lado del cliente y del servidor de validación en el lado del uso de los atributos de validación. Esta es una excelente característica de MVC así que no lo ignore.
    • Siguiente, @Html.LabelFor(model => model.email) generará un <label> etiqueta con el texto «correo electrónico», por lo que sería muy confuso para un usuario si su espera entonces a no escriba un correo electrónico (y cuando lo hacen, mostrar un mensaje diciéndoles que no es válido, incluso a pesar de que es!). Cambiar el nombre a algo que transmite su significado, y, a continuación, agregue un RegularExpressionAttribute – por ejemplo, [RegularExpression(@"^[a-zA-Z]+$", ErrorMessage = "Only upper and lower case letters are allowed.")]
  2. 0

    La allvalidate() la función que debe tener este aspecto ( llamada función de envío, no el valor de retorno) :

    <script>
    function allvalidate() {
    var validated = true;
    if (!validate()) validated = false;
    if (!checkAge(age)) validated = false;
    if (!checkuser(email)) validated = false;
    if(validated)
    $('[type="submit"]').submit();
    }
    </script>
    • gracias , pero en este caso es enviar los datos al servidor en el que se muestra un error masseges y abrir y cerrar quickily y guardar los datos en la base de datos , y funciona link que devolver verdadero falso no como yo quiero que si hay cualquier de los casos no se reunió en la validación para devolver false y a los datos en el cliente y no para ser enviado @trungtin1710

Dejar respuesta

Please enter your comment!
Please enter your name here