2012-04-21 21 views
1

我有一个非常奇怪的问题Asp.net MVC 3 - 视图中显示需要从视图模型性质,这当不可吨是

我有一个视图模型:

public class ServiceView 
{ 
    [Required] 
    [Display(Name = "Titre de l' annonce")] 
    public string NomService { get; set; } 

    [Required] 
    [Display(Name = "Description")] 
    public string DescriptionService { get; set; } 

    [Display(Name = "Adresse")] 
    public string AdresseService { get; set; } 

    [Display(Name = "Le code postal")] 
    public int CodePostalService { get; set; } 

} 

和查看其是紧我的视图模型:

@model MeilleurPresta.Models.ViewModel.ServiceView 

@{ 
    ViewBag.Title = "Déposer une offre"; 
} 

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 


<div class="grid_23" id="body"> 

    <h3 style="padding-left: 50px"> Déposer une offre de Service </h3> 

    <div style="margin-left: 50px"> 
     @using (Html.BeginForm()) { 

      @Html.ValidationSummary(true) 

      <div class="editor-label"> 
       @Html.LabelFor(model => model.NomService) 
      </div> 
      <div class="editor-field"> 
       @Html.EditorFor(model => model.NomService) 
       @Html.ValidationMessageFor(model => model.NomService) 
      </div> 

      <div class="editor-label"> 
       @Html.LabelFor(model => model.DescriptionService) 
      </div> 
      <div class="editor-field"> 
       @Html.EditorFor(model => model.DescriptionService) 
       @Html.ValidationMessageFor(model => model.DescriptionService) 
      </div> 

      <div class="editor-label"> 
       @Html.LabelFor(model => model.AdresseService) 
      </div> 
      <div class="editor-field"> 
       @Html.EditorFor(model => model.AdresseService) 
       @Html.ValidationMessageFor(model => model.AdresseService) 
      </div> 

      <div class="editor-label"> 
       @Html.LabelFor(model => model.CodePostalService) 
      </div> 
      <div class="editor-field"> 
       @Html.EditorFor(model => model.CodePostalService) 
       @Html.ValidationMessageFor(model => model.CodePostalService) 
      </div> 

      <p> 
       <input type="submit" value="Create" /> 
      </p> 
     } 
    </div> 
</div> 

我的控制器:

public ActionResult Index() 
    { 
     return View(); 
    } 

然而,没有什么特别的,当我提交表单时,在客户端验证时,它表明该字段:Le code postal是必需的,但它不在ViewModel中。

我检查了html源代码,它生成data-val所需的类,而在我的ViewModel中没有要求attributs。

问题可能来自哪里?

感谢

回答

1

因为你的int是不是空的,它标志着默认需要。你可以将int设置为int?使其可以为空,或者你可以添加这个到你的application_start来改变默认行为...

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false; 
+0

这是确切的,非常感谢Trent – dtjmsy 2012-04-21 13:02:55