1

私のビューには、テキスト ボックス (電子メール) と送信ボタンがあります。

@using (Html.BeginForm("FindMyDetail", "ResetPassword", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
   {
      @Html.AntiForgeryToken()
      <h4>Enter your email.</h4>

     @Html.ValidationSummary(false, "", new { @class = "alert alert-danger" })

 @Html.ValidationMessageFor(m=>m.Email)
<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", @value = @Html.DisplayFor(m => m.Email) })*@
        @Html.TextBoxFor(m => m.Email, true, htmlAttributes: new { @class = "form-control", placeholder = "Enter Email Id you used to register" })
    </div>
</div>
<div class="form-group">
    <div class="col-md-offset-2 col-md-10">

        <input type="submit" class="btn btn-default" value="Email Link" />

    </div>
</div>

}

MVC Web アプリのビューに複数の検証メッセージを表示する必要があります。

Case1 : テキストボックスが空のままの場合、電子メール ID を入力するための検証メッセージを表示します。

ケース 2 : 電子メールが存在する場合、送信ボタンはメールをトリガーします。メールが失敗した場合 (false)、電子メールが存在しないという検証メッセージが来るはずです。送信ボタンをクリックすると、特定の電子メールへのメールをトリガーするコントローラーが呼び出されます。成功した場合は、成功メッセージを含む別のビューを返します。それ以外の場合は、同じビュー (EmailLink ビュー) を返します。

これを実装するasp.net Webフォームでは簡単に見えますが、非常に異なって見え、MVCでこれを実装する方法が初めてなので困惑しています。

編集: カスタム検証を使用して実装する必要があります。データ注釈を使用していません。

4

1 に答える 1

0

これを行うには 2 つの簡単な方法があります。クライアント側またはサーバー側で検証できます。

クライアント側:

この jquery プラグインをページにインポートします: http://ajax.aspnetcdn.com/ajax/jquery.validate/1.15.0/jquery.validate.min.js

また、JavaScript ファイルで、必要な検証を作成できます。たとえば、次のようになります。

$(document).ready(function() {
  $("#FindMyDetail").validate({
    rules: {
      Email: {
        required: true,
        maxlength: 40,
        email: true
      }
    },
    messages: {
      Email: {
        required: "We need your email address to contact you",
        email: "Your email address must be in the format of name@domain.com"
      }
    }
  });
});

サーバ側

asp.net フレームワークを使用して、モデルを検証できます。次のようないくつかの属性でモデルを装飾する必要があります。

public class Person
{
    public int ID { get; set; }

    [Required]
    [StringLength(40)]
    public string Email { get; set; }
}

そして、コントローラーのアクションで:

[HttpPost]
public ActionResult Create(Person person)
{
    if (ModelState.IsValid)
    {
        //foo
        return RedirectToAction("Index");
    }

    return View(person);
}
于 2016-06-23T18:41:41.153 に答える