2017-10-09 17 views
-1

私はMVCプロジェクトでデータ注釈を使用しようとしています。データ注釈mvc

モデルを作成し、適切な注釈をすべて追加しました。私は私のビューとコントローラを持っていて、とても多くの方法を試みましたが、私は結果を得られませんでした。

[送信]ボタンをクリックすると、検証が実行されましたが、メッセージが表示されず、エラーが表示されて解決されませんでした。

モデル

using System; 
using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations; 
using System.Linq; 
using System.Web; 

namespace AllExamples.DTO 
{ 
    public class EmployeeViewModel 
    { 
     public List<EmployeeInfo> objemployeeinfoList { get; set; } 
     public EmployeeInfo objemployeeinfo { get; set; } 
    } 


    public class EmployeeInfo 
    { 
     public int EmployeeID { get; set; } 
     [Display(Name = "Employee name")] 
     [Required (ErrorMessage ="Employee name required.")] 
     public string EmployeeName { get; set; } 
     [Required(ErrorMessage = "Email id required.")] 
     public string EmailID { get; set; } 
     [Required(ErrorMessage = "Contact Number required.")] 
     public string ContactNumber { get; set; } 
     public string Department { get; set; } 
     public string EmployeeType { get; set; } 
     public string Roles { get; set; } 
    } 

    public class BillingInfo 
    { 
     public int BillingID { get; set; } 
     public string BillingName { get; set; } 
    } 

    public class NonBillingInfo 
    { 
     public int nonbillingId { get; set; } 
     public string Nonbillingname { get; set; } 
    } 
} 

Index.cshtml

@model AllExamples.DTO.EmployeeViewModel 
@{ 
    ViewBag.Title = "Home Page"; 
} 
<script src="~/Scripts/jquery-1.10.2.js"></script> 
<script src="~/Scripts/jquery.validate.js"></script> 
<script src="~/Scripts/jquery.validate.unobtrusive.js"></script> 

@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { @class = "form-horizontal", role = "form" })) 
{ 
    @*@Html.AntiForgeryToken()*@ 

    @Html.ValidationSummary(false) 

    <div class="form-group"> 
     @Html.Label("Employee Name", new { @class = "col-md-2 control-label" }) 
     <div class="col-md-10"> 
      @Html.TextBoxFor(m => m.objemployeeinfo.EmployeeName, new { @class = "form-control", Name = "EmployeeName" }) 
      @Html.ValidationMessageFor(m => m.objemployeeinfo.EmployeeName) 
     </div> 
    </div> 
    <div class="form-group"> 
     @Html.Label("Email ID", new { @class = "col-md-2 control-label" }) 
     <div class="col-md-10"> 
      @Html.TextBoxFor(m => m.objemployeeinfo.EmailID, new { @class = "form-control",Name= "EmailID" }) 
      @Html.ValidationMessageFor(m => m.objemployeeinfo.EmailID) 
     </div> 
    </div> 
    <div class="form-group"> 
     @Html.Label("Contact Number", new { @class = "col-md-2 control-label" }) 
     <div class="col-md-10"> 
      @Html.TextBoxFor(m => m.objemployeeinfo.ContactNumber, new { @class = "form-control", Name = "ContactNumber" }) 
      @Html.ValidationMessageFor(m => m.objemployeeinfo.ContactNumber) 
     </div> 
    </div> 

    <div class="form-group"> 
     <div class="col-md-offset-2 col-md-10"> 
      <input type="submit" class="btn btn-default" value="Save" /> 
     </div> 
    </div> 
} 

web.configファイル

<add key="ClientValidationEnabled" value="true" /> 
<add key="UnobtrusiveJavaScriptEnabled" value="true" /> 

いずれかは、hを助けてくださいこの問題を解決するために、私は逃したものを手に入れませんでしたか?

+0

彼らはもはや検証のモデルと一致していないので、 '新しい{NAME = "EmployeeName" は、'} 'フォームコントロールの' name'の属性を変更しているので'ValidationMessageFor()'によって生成されたメッセージプレースホルダです。 **決して 'HtmlHelper'メソッドを使うとき' name'属性を変更しようとしないでください。ビューモデルにデータモデルが含まれていない - [MVCのViewModelとは何ですか?](https://stackoverflow.com/questions/11064316/what-is-viewmodel-in-mvc) –

+0

ありがとうございます。 –

+0

間違った回答を受け入れないでください。他のユーザーを誤解するだけです。 –

答えて

-1

おそらく、投稿後にコードにModelState.IsValidを使用していない可能性があります。あなたは、あなたがEmployeeInfoを使用して、ビューにコントローラから同じを渡すことができます代わりにEmployeeViewModelを使用する必要はありません、単一の従業員の情報を使用しているので

public ActionResult ControllerName(EmployeeInfo obj) 
{ 
    if (ModelState.IsValid) 
    { 
     //// Your Code 
    } 
} 
+0

これはコメントであり、推測であり、回答ではありません。 –

+0

@AshleyMedway ...私はコントローラコードを尋ねました。コメントする権利がないもう一つのことは、答えとして更新される理由です。負の符号を付けるだけでは意味がありません。 –

+0

あなたが権限を持っていないので、ルールを読んでも、回答としてコメントを書く権限があるわけではありません。あなたは詳細を求めています、これはコメントです。 https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reference-to-comment-what-c​​an-i-do-instead –

1

としてそれを試してみてください。

変更(ビュー):

@model AllExamples.DTO.EmployeeInfo 
@{ 
    ViewBag.Title = "Home Page"; 
} 
<script src="~/Scripts/jquery-1.10.2.js"></script> 
<script src="~/Scripts/jquery.validate.js"></script> 
<script src="~/Scripts/jquery.validate.unobtrusive.js"></script> 

@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { @class = "form-horizontal", role = "form" })) 
{ 
    @*@Html.AntiForgeryToken()*@ 

    @Html.ValidationSummary(false) 

    <div class="form-group"> 
     @Html.Label("Employee Name", new { @class = "col-md-2 control-label" }) 
     <div class="col-md-10"> 
      @Html.TextBoxFor(m => m.EmployeeName, new { @class = "form-control", Name = "EmployeeName" }) 
      @Html.ValidationMessageFor(m => m.EmployeeName) 
     </div> 
    </div> 
    <div class="form-group"> 
     @Html.Label("Email ID", new { @class = "col-md-2 control-label" }) 
     <div class="col-md-10"> 
      @Html.TextBoxFor(m => m.EmailID, new { @class = "form-control",Name= "EmailID" }) 
      @Html.ValidationMessageFor(m => m.EmailID) 
     </div> 
    </div> 
    <div class="form-group"> 
     @Html.Label("Contact Number", new { @class = "col-md-2 control-label" }) 
     <div class="col-md-10"> 
      @Html.TextBoxFor(m => m.ContactNumber, new { @class = "form-control", Name = "ContactNumber" }) 
      @Html.ValidationMessageFor(m => m.ContactNumber) 
     </div> 
    </div> 

    <div class="form-group"> 
     <div class="col-md-offset-2 col-md-10"> 
      <input type="submit" class="btn btn-default" value="Save" /> 
     </div> 
    </div> 
} 
+0

をチェックすることができます..私は単一のビューで複数のモデルを使用することはできません..実際に私は* Index.cshtml *ビューで部分的なビューを持っています。そのため私はEmployeeViewModelを使っています。あなたの応答に基づいて、私は変更すると、部分ビューを使用してテーブル内の従業員のリストを表示する方法 –

+0

従業員のリストを表示するには、 'EmployeeViewModel'を使用し、単一ユーザーの使用の詳細を表示するには' EmployeeInfo'を使用します。 –

関連する問題