1

私はこれを持っていますview

@using (Html.BeginForm("RegisterApartmentOwner", "Home", FormMethod.Post, 
                            new { enctype = "multipart/form-data" }))
                            {
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)

    <div class="editor-label">
            @Html.LabelFor(model => model.FirstName)
    </div>
    <div class="editor-field">
            @Html.TextBoxFor(x => x.FirstName, new {placeholder = "Enter Your First Name" })
            @Html.ValidationMessageFor(model => model.FirstName)
    </div>
    <div class="editor-label">
            @Html.LabelFor(model => model.LastName)
    </div>
    <div class="editor-field">
            @Html.TextBoxFor(model => model.LastName, new { placeholder = "Enter Your Last Name"})
            @Html.ValidationMessageFor(model => model.LastName)
    </div>
    <div class="editor-label">
            @Html.LabelFor(model => model.Password)
    </div>
    <div class="editor-field">
            @Html.TextBoxFor(model => model.Password, new { placeholder = "Enter Your Password"})
            @Html.ValidationMessageFor(model => model.Password)
    </div>
    <div class="editor-label">
          @Html.LabelFor(model => model.Password)
    </div>
    <div class="editor-field">
        @Html.TextBoxFor(model => model.Password, new { placeholder = "Enter Your Password Again"})
        @Html.ValidationMessageFor(model => model.Password)
    </div>
    <div class="editor-label">
            @Html.LabelFor(model => model.MobileNumber)
    </div>
    <div class="editor-field">
            @Html.TextBoxFor(model => model.MobileNumber, new { placeholder = "Enter Your Mobile Number"})
            @Html.ValidationMessageFor(model => model.MobileNumber)
    </div>
    <input type="submit" value="Register"  class="submit"/>
}

私の問題は、フィールドが空の場合にのみ検証が機能することですが、2つのパスワードが等しくない場合や、携帯電話番号が数字ではない場合などを検証で検出したい. どうすればいいですか?

4

6 に答える 6

1

データ注釈http://msdn.microsoft.com/en-us/library/dd901590(v=vs.95).aspxをご覧ください。

于 2013-10-27T09:35:52.380 に答える
0

モデルで自己検証アプローチを使用できます。

public class TestModel : IValidatableObject
{
    public string FirstName { get; set; }
    public string Password { get; set; }
    public string PasswordConfirm { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (FirstName == null)
        {
            yield return new ValidationResult("FirstName is mandatory.");
        }

        if (Password != PasswordConfirm)
        {
            yield return new ValidationResult("Password confirmation does not match.");
        }
    }
}

コントローラーには、次のようなものがあります。

[HttpPost]
public ActionResult Create(Model model) {
    if (!ModelState.IsValid) {
        var errors = model.Validate(new ValidationContext(model, null, null));
        foreach (var error in errors)   
        {
            foreach (var memberName in error.MemberNames)
            {
                ModelState.AddModelError(memberName, error.ErrorMessage);
            }
        }
        return View(model);
    }
}

このアプローチの詳細: IValidatableObject を検証するように MVC を強制する方法

于 2013-10-27T10:14:19.663 に答える
0

ASP.NET MVC にはRegularExpressionorのようないくつかの検証属性がありますDataTypeが、状況によっては十分ではありません。その場合、テキストボックスにマスクが必要で、最適なのはmeioです。このサイトでは、さまざまなケースの例を多数提供しています。

2 つのパスワードが等しいことを確認するには、JavaScript コードを記述するか、Jquery 検証に新しいルールを追加する必要があります。2 つのパスワードを Jquery で比較すると役立つ場合があります。属性は、Compare2 つの値を比較するもう 1 つの選択肢です。

于 2013-10-27T09:38:10.827 に答える