2016-03-22 30 views
0

Visual Studio 2015アップデート1
MVC 5.2.3。
.NET 4.5.2ModelState.IsValidは常にtrue

[表示名]は正しく表示されますが、[必須]属性を使用していないと思われます。ありがとう!!!

ビュー:

@model Insure.Entities.Policy 

@{ ViewBag.Title = "Policy"; } 

<h2>Policy</h2> 

@using (Html.BeginForm()) 
{ 
@Html.AntiForgeryToken() 

<div class="form-horizontal"> 
    <h4>Create</h4> 
    <hr /> 
    @Html.ValidationSummary(true) 

    <div class="form-group"> 
     @Html.LabelFor(model => model.EffDate, new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.EffDate) 
      @Html.ValidationMessageFor(model => model.EffDate) 
     </div> 
    </div> 

    <div class="form-group"> 
     @Html.LabelFor(model => model.ExpDate, new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.ExpDate) 
      @Html.ValidationMessageFor(model => model.ExpDate) 
     </div> 
    </div> 

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

<div> 
    @Html.ActionLink("Back to List", "Index") 
</div> 

モデル:

using System; 
using System.ComponentModel; 
using System.ComponentModel.DataAnnotations; 

namespace Insure.Entities 
{ 
public class Policy 
{ 
    public int PolicyID { get; set; } 
    public Guid PolicyNumber { get; set; } 

    [Required(ErrorMessage = "Effective Date Required")] 
    [DataType(DataType.DateTime)] 
    [DisplayName("Effective Date")] 
    public DateTime EffDate { get; set; } 

    [Required(ErrorMessage = "Expiration Date Required")] 
    [DataType(DataType.DateTime)] 
    [DisplayName("Expiration Date")] 
    public DateTime ExpDate { get; set; } 
} 
} 

コントローラー:

// POST: Policy/Create 
    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create(FormCollection collection) 
    { 
     try 
     { 
      if (ModelState.IsValid) 
      { 
       // TODO: Add logic to insert to DB 
       return RedirectToAction("Index"); 
      } 
      else 
      { 
       return View(); 
      }   
     } 
     catch 
     { 
      return View(); 
     } 
    } 
+4

'public ActionResult Create(FormCollection collection)'は 'public ActionResult Create(Policy myPolicyModel)'でなければなりません – Igor

+1

これを回答として追加します。 –

+0

ああ申し訳ありませんが、私は盗むことを意味しませんでした..投稿後にこれを見ていない –

答えて

2
public ActionResult Create(FormCollection collection) 

public ActionResult Create(Policy myPolicyModel) 

あるべきその後の検証は、モデル上で実行されます。

関連する問題