2015-04-15 60 views
1

MVC 4個DataAnnotations我試圖用一個MVC模型類以下和輸入字母時,沒有得到預期的錯誤。我希望這個字段只接受數字。上可空<int>

[RegularExpression("[0-9]*", ErrorMessage = "Must be integer.")] 
public Nullable<int> Runtime { get; set; } 

奇怪的是,只有在輸入字母和數字組合時才顯示錯誤。 (即FFF5758)

是否有人可以幫助我瞭解什麼是錯的?

非常感謝!

控制器:

// 
    // GET: /Movies/Create 

    public ActionResult Create() 
    { 
     ViewBag.RatingId = new SelectList(db.Ratings, "RatingId", "Rating"); 
     return View(); 
    } 

    // 
    // POST: /Movies/Create 

    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create(Movies movies) 
    { 
     if (ModelState.IsValid) 
     { 
      db.Movies.Add(movies); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

     ViewBag.RatingId = new SelectList(db.Ratings, "RatingId", "Rating", movies.RatingId); 
     return View(movies); 
    } 

查看:

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

對不起,,,代碼沒貼。應該是:public Nullable Runtime {get;組; } – Dan

+0

您可以編輯自己的帖子。只需點擊它下面的編輯按鈕,就可以改變你想要的。 –

+0

新視線......謝謝你的提示,瑞安 – Dan

回答

0

試試這個:

[RegularExpression(@"[0-9]*", ErrorMessage = "Must be integer.")] 
    [Range(typeof(int), "30", "300", ErrorMessage = "Must be a sensible integer value.")] 
    public int? Runtime { get; set; } 

這也意味着運行時不能超過十億分鐘。如預期

+0

試過這個。我只在輸入數字時收到預期的錯誤消息。我可以輸入任何其他信息而沒有任何消息非常意外。 – Dan

+0

這個怎麼樣?從代碼中借用RegularExpression註釋。 – Mukus

+0

同樣的情況。輸入數字時收到消息:獲取必須是明智的整數值。沒有找到大量致力於這種困境的網站,所以我感謝您的幫助。 – Dan