Confirmation of registration data E-mail Password

1

I would like to know the best way to validate E-mail and password, to verify that the user has correctly entered the information. Ex:

  

Enter your email:

     

Confirm your email:

     

Enter your password:

     

Confirm your password:

the best way is to validate in the HTML code itself or in the controller? and in case of this information, store the confirmed data in the database as well?

Bank:

  

Email

     

ConfirmEmail

     

Password

     

ConfirmSenha

    
asked by anonymous 10.11.2016 / 20:16

1 answer

3

ASP.NET MVC has this ready in Model , automatically replicable to Views . Example:

ViewModel

public class RegisterBindingModel
{
    [Required]
    [EmailAddress]
    [Display(Name = "Email")]
    public string Email { get; set; }

    [Display(Name = "Confirmar Email")]
    [Compare("Email", ErrorMessage = "E-mail e confirmação não são os mesmos.")]
    public string ConfirmEmail { get; set; }

    [Required]
    [StringLength(100, ErrorMessage = "{0} deve ter pelo menos {2} caracteres de comprimento.", MinimumLength = 6)]
    [DataType(DataType.Password)]
    [Display(Name = "Senha")]
    public string Password { get; set; }

    [DataType(DataType.Password)]
    [Display(Name = "Confirmar senha")]
    [Compare("Password", ErrorMessage = "Senha e confirmação não são as mesmas.")]
    public string ConfirmPassword { get; set; }
}

View

@model SeuSistema.ViewModels.RegisterBindingModel

<h2>@ViewBag.Title.</h2>

@using (Html.BeginForm("Register", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
    @Html.AntiForgeryToken()
    <h4>Create a new account.</h4>
    <hr />
    @Html.ValidationSummary("", new { @class = "text-danger" })
    <div class="form-group">
        @Html.LabelFor(m => m.Email, new { @class = "col-md-2 control-label" })
        <div class="col-md-10">
            @Html.TextBoxFor(m => m.Email, new { @class = "form-control" })
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(m => m.ConfirmEmail, new { @class = "col-md-2 control-label" })
        <div class="col-md-10">
            @Html.TextBoxFor(m => m.ConfirmEmail, new { @class = "form-control" })
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(m => m.Password, new { @class = "col-md-2 control-label" })
        <div class="col-md-10">
            @Html.PasswordFor(m => m.Password, new { @class = "form-control" })
        </div>
    </div>
    <div class="form-group">
        @Html.LabelFor(m => m.ConfirmPassword, new { @class = "col-md-2 control-label" })
        <div class="col-md-10">
            @Html.PasswordFor(m => m.ConfirmPassword, new { @class = "form-control" })
        </div>
    </div>
    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" class="btn btn-default" value="Register" />
        </div>
    </div>
}

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}
  

In case of this information, store the confirmed data in the database as well?

No, you never store confirmations. This is why the implementation uses ViewModel , not Model . In Controller , you'll do additional processing when saving the user.

    
10.11.2016 / 20:26