В asp.net MVC, как добавить проверки - PullRequest
0 голосов
/ 07 февраля 2019

Я хочу сравнить пароли, а также указанную длину пароля.Есть некоторая проблема в контроллере, где я обновляю его, он возвращает представление, только если пароли пусты, тогда я применил условие, чтобы сопоставить их, но я хочу, чтобы это делалось автоматически, например, когда я хочу проверить длину, которую я не вижу.Не нужно применять другое условие в модели.Пожалуйста, помогите мне, в чем проблема с моим подходом?

Я пробовал этот код

Контроллер:

    [AllowAnonymous]
    public ActionResult ResetPass()
    {
        return View();
    }

    [HttpPost]
    [AllowAnonymous]
    public ActionResult ResetPass(userPass model, string phoneNumber, String password, String repassword)
    {
        if (!String.IsNullOrEmpty(model.repassword) && !String.IsNullOrEmpty(model.password)&&model.password==model.repassword )
        {
            using (var db = new MongoContext())
            {
                db._database.GetCollection<userPass>("userPass");

                var filter = Builders<BsonDocument>.Filter.Eq("_phoneNumber", phoneNumber);

                var update = Builders<BsonDocument>.Update
                    .Set("password", password);

                db._database.GetCollection<BsonDocument>("farmers").UpdateOne(filter, update, null);

                return RedirectToAction("Login", new {Message = "password has been reset"});
            } 
        }
        return View(model);
    }

Модель:

    public class userPass
    {
    [BsonElement("password")]
    [Required(ErrorMessage = "Password is required.")]
    [StringLength(8, ErrorMessage = "Password length must be 8.")]
    public string password { get; set; }

    [BsonElement("repassword")
    [Required(ErrorMessage = "Confirmation Password is required.")]
    [Compare("password", ErrorMessage = "Password and Confirmation Password must match.")]
    public string repassword { get; set; }
}

Вид:

              @using (Html.BeginForm("ResetPass", "Account", FormMethod.Post))
                {
                    <table>
                        <tr>
                            <td>Password</td>
                            <td>@Html.PasswordFor(m => m.password)</td>
                            <td>@Html.ValidationMessageFor(m => m.password, "", new { @class = "error" })</td>
                        </tr>
                        <tr>
                            <td>Confirm Password</td>
                            <td>@Html.PasswordFor(m => m.repassword)</td>
                            <td>@Html.ValidationMessageFor(m => m.repassword, "", new { @class = "error" })</td>
                        </tr>
                        <tr>
                            <td></td>
                            <td><input type="submit" class="btn btn-primary block m-b" value="Submit" /></td>
                            <td></td>
                        </tr>

                    </table>
                }

                @Scripts.Render("~/bundles/jquery")
                @Scripts.Render("~/bundles/jqueryval")

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Редактировать атрибут сравнения.

 [Compare(CompareField = password, ErrorMessage = "Password and Confirmation Password must match.")]

вот пример детали:

 public class userPass
 {
    [BsonElement("password")]
    [Required(ErrorMessage = "Password is required.")]
    [StringLength(8, ErrorMessage = "Password length must be 8.")]
    public string password { get; set; }

    [BsonElement("repassword")
    [Required(ErrorMessage = "Confirmation Password is required.")]
    [Compare(CompareField = password, ErrorMessage = "Password and Confirmation Password must match.")]
    public string repassword { get; set; }

}

0 голосов
/ 07 февраля 2019
[HttpPost]
[AllowAnonymous]
public ActionResult ResetPass(userPass model)
{
    if(ModelState.IsValid) {

    }
    return View(model)
}

Немного модификации.

Для минимальной длины вы можете использовать атрибут диапазона -

[Range(8, 25, ErrorMessage = "Min Length should be 8")]

Первый параметр - minLength, а второй - maxLength

или

[MinLength(8, ErrorMessage = "Min Length should be 8")]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...