2017-06-29 44 views
0

當我發佈一個無效的串行,其設置爲「」(空字符串),我期望ModelState.isValid是false,但它返回true ..這是我的代碼。.net mvc數據註釋模型狀態返回總是爲

 private string _tcno { get; set; } 

     [Required(ErrorMessage = "Enter serial")] 
     [StringLength(11, MinimumLength = 11, ErrorMessage="Invalid Serial Number")] 
     [Column(TypeName = "nchar")] 
     public string TCNO 
     { 
      get { return _tcno ?? ""; } 
      set { 
       value = value ?? ""; 
       _tcno = value.IsValidTC() ? value : ""; 
      } 
     } 

我相信min 11長度驗證爲什麼ModelState.isValid在這裏是true?

+0

由於您已設置MinimumLength屬性併發布空值,因此您將獲得model.state = true。如果你希望它是假的,那麼刪除minimumlength屬性。 –

+0

感謝您的評論,但它不正確 – TyForHelpDude

回答

0

沃金下面複製使用我的驗證方法,並設置' - '如果它的無效序列號,這種驗證錯誤信息是我所期望的。

private string _tcno { get; set; } 
     [Required(ErrorMessage = "Enter Serial")] 
     [StringLength(11, MinimumLength = 11, ErrorMessage="Invalid Serial Number.")] 
     [Column(TypeName = "nchar")] 
     public string TCNO 
     { 
      get { return _tcno ?? ""; } 
      set { 
       value = value.IsValidTC() ? value : "-"; 
       _tcno = value; 
      } 
     } 
0

希望這會有所幫助。我做了以下,我得到了一個「有效」爲12345678901和我「無效」的1234

查看:

@model Testy20161006.Controllers.AttributeViewModel 
<!DOCTYPE html> 
<html> 
<head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>IndexValid10</title> 
</head> 
<body> 
    <div> 
     @using (Html.BeginForm()) 
     { 
      @Html.TextBoxFor(r => r.TCNO); 
      <input type="submit" value="submit" /> 
     } 
    </div> 
</body> 
</html> 

控制器/視圖模型:

public class AttributeViewModel 
{ 
    private string _tcno { get; set; } 

    [Required(ErrorMessage = "Enter serial")] 
    [StringLength(11, MinimumLength = 11, ErrorMessage = "Invalid Serial Number")] 
    [Column(TypeName = "nchar")] 
    public string TCNO 
    { 
     get { return _tcno ?? ""; } 
     set 
     { 
      value = value ?? ""; 
      //modified this line 
      _tcno = value; 
     } 
    } 
} 

public class HomeController : Controller 
{ 
    [HttpPost] 
    public ActionResult IndexValid10(AttributeViewModel attributeViewModel) 
    { 
     //set a breakpoint here 
     if (ModelState.IsValid) 
     { 
      var isValid = true; 
     } 
     return View(); 
    } 
+0

沒有這不會幫助,因爲它不使用我的isValidTC()方法.. – TyForHelpDude

+0

@TyForHelpDude你可以請你發佈你的isValidTC()方法嗎? – kblau