2016-03-25 9 views
1

ASP.NET MVCの入力フォームで作業しています。私の入力フォームには、次のようになります。このフォームの背後にあるASP.NET MVC - レイザービューでフィールドにエラーがあるかどうかを確認します。

@using (Html.BeginForm("Result", "Contact", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { role="form" })) 
{ 
    <h4>What do you want to tell us?</h4> 
    @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 

    <div class="form-group label-floating"> 
    <label class="control-label" for="Subject">Subject</label> 
    <input class="form-control" id="Subject" name="Subject" type="text"> 
    </div> 

    <div class="form-group"> 
    <input type="submit" value="Send" class="btn btn-primary btn-raised" /> 
    </div> 

    @Html.AntiForgeryToken() 
} 

私のモデルは次のようになります。

public class ContactModel 
{ 
    [Required(ErrorMessage="Please enter the subject.")] 
    [Display(Name="Subject")] 
    public string Subject { get; set; } 
} 

私は条件付きモデルが有効であるかどうかに基づいて、クラスや構造を適用したいです。私はまた、フィールドごとにそれをやりたい私の質問は、Razorでは、「件名」プロパティが有効かどうか、またはエラーがあるかどうかを判断する方法は?ありがとう!

+0

ヘルパーの検証メッセージを使用します。それに関する文書のトン –

+0

「適用する」とはどういう意味ですか? ( "条件付きでクラスと構造を適用する") – ilans

+0

'@if(Model.HasError(" Subject "){...}'のようなことをしたいのですか? – user70192

答えて

0

@PeterBのコメントと@PeterBで述べたように、入力ごとの検証メッセージを表示するには、Html.ValidationMessageForメソッドを入力の近くに表示する必要があります。しかし、私は気づきたい:あなたはモデルを持っていますが、あなたのフォームには使用しないでください。さらに、クライアントとサーバーの検証とラベリングのためのデータアノテーションがあり、ビューにも使用しないでください。

ビューのためにこのアプローチを確認してください:

このスニペットは、フォームを投稿した後Requiredデータ注釈のErrorMessageプロパティに記載されているエラーメッセージが表示されるはずです。目立たない検証を有効にすると便利です。

ASP.NET MVC guidesで検証に関する記事があります。

P .:コントローラなどでサーバー側の検証を実行することを忘れないでください。

0

コントローラには、エラーがあるかどうかを確認するためにModelState.IsValidを使用し、特定のフィールドにエラーがあるかどうかを確認するためにModelState["nameOfField"]を使用することができます。

ビューでは、Html.ValidationSummary()(ある場合はすべてのエラーを表示)またはHtml.ValidationMessageFor()(特定のコントロールがある場合はエラーを表示)を使用できます。例はたくさんある、両方とも& off StackOverflow。

関連する問題