@using (Ajax.BeginForm()){---} 内に 3 つの PasswordFor、oldpassword、newpassword、confirmnewpassword があり、モデルにバインドされたこれらの値が必要であり、データ注釈を使用してクライアント側で検証された newpassword と confirmnewpassword の値が必要です. [Compare("newpassword",errormessage="error message---"(]) を使用して newpassword と confirmnewpassword の値を比較しました。 ] は完全に機能しますが、oldpassword のパスワードも Ajax.BeginForm 内で使用される場合、Compare 検証は機能しません.これら 3 つの値すべてをモデルを介してコントローラーに渡す必要がありますが、これら 3 つのボックスを同時に使用することはできませんnewpassword と confirmnewpassword を比較するフォーム。oldpassword が BeginForm() の外で取得された場合、比較は機能しますが、oldpassword の値はデータ注釈を使用して検証されず、その値はモデルを介してコントローラーに渡されません。Ajax.BeginForm 内にこれら 3 つの PasswordFor がすべてあり、すべての検証がクライアント側で検証されるまで送信されない間に、この [Compare()] を機能させるだけで済みます。どんな助けでも大歓迎です。
私の見解:
@model eremit.Models.CustomerAll
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftAjax.debug.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.debug.js")" type="text/javascript"></script>
@using (Ajax.BeginForm("verifycustomer", "CustomerLogin", new AjaxOptions { UpdateTargetId = "messagediv" }))
{
@Html.ValidationSummary(true)
<h3>Old password</h3>@Html.PasswordFor(model => model.Login.oldpassword)
@Html.ValidationMessageFor(model => model.Login.oldpassword)
<h3>New password</h3>@Html.PasswordFor(model => model.Login.newpassword)
@Html.ValidationMessageFor(model => model.Login.newpassword)
<h3>
Re-enter New password</h3>@Html.PasswordFor(model => model.Login.confirmnewpassword)
@Html.ValidationMessageFor(model => model.Login.confirmnewpassword)
<div id="messagediv">
</div>
<input type="submit" id="btnchangepassword" value="Change Password" />
私のモデル:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using System.Web.Mvc;
using System.Web.Security;
namespace eremit.Models
{
public class Login
{
[Required(ErrorMessage = "* Please enter old password")]
public string oldpassword { get; set; }
[Required(ErrorMessage = "* Please enter new password")]
[Display(Name = "newpassword")]
[RegularExpression("^[a-zA-Z<>$@#!%&_0-9]+$", ErrorMessage = "Invalid Password")]
public string newpassword { get; set; }
[Required(ErrorMessage = "* Re-enter your new password")]
[Compare("newpassword", ErrorMessage = "The new password and confirmation password do not match.")]
public string confirmnewpassword { get; set; }
}
}