2013-04-22 68 views
1

我有一個網頁窗體(c#asp.net mvc 4)用戶可以輸入一些數字。 這裏的代碼模型的一部分:TextBoxFor int?在ASP.NET mvc 4.如果用戶輸入值異常什麼超過最大int大小

[Range(1, Int32.MaxValue)] 
public int? MyVariable { get; set; } 

但是這一次不利於在用戶輸入值更重要的是這MAXINT,例如「999999999999」。在這種情況下,我有一個例外,在服務器上的值超過max int。 有沒有驗證這種情況的方法? 我看到兩種方式,但並不都喜歡:

  • 點擊提交按鈕使用JavaScript來檢查後的值超過2,147,483,647以上。如果更多,我不提交併顯示錯誤消息。此外,我需要在頁面上創建div,當有40個輸入時,什麼不是個好主意。
  • 將輸入字符數限制爲9個字符。所以用戶不能輸入超過9位數字,也不能超過最大整數大小。我也不喜歡這個解決方案。

希望有人有更好的。

回答

3

RangeMVC validation本身能夠驗證我們並不需要做任何特殊的事情。

這就是我所做的,完全符合法案。

型號

public class IndexModel 
{ 
    [Range(1, Int32.MaxValue)] 
    public int? MyVariable { get; set; } 
} 

控制器

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Index(IndexModel model) 
    { 
     return View(); 
    } 
} 

查看

@model MvcApplication2.Models.IndexModel 
<script src="../../Scripts/jquery.validate.min.js" type="text/javascript"></script> 
@using (Html.BeginForm()) 
{ 
    @Html.TextBoxFor(m => m.MyVariable) 
    @Html.ValidationMessageFor(m => m.MyVariable) 

    <input type="submit" id="submit" value="submit" />  
} 
+0

我的服務器只驗證。我看着你已經包含了一些腳本來查看。它的JavaScript客戶端驗證? – Vitalii 2013-04-22 12:58:04

+0

@Vitalii,是的,它是默認提供,你可以很容易地在腳本文件夾中找到它 – Satpal 2013-04-22 13:00:18

+0

你的意思是說,如果我將'jquery.validate.min.js'包含到我的頁面客戶端驗證將自動啓用?我聽說過它,但從來沒有使用客戶端。只有服務器端 – Vitalii 2013-04-22 13:01:57

相關問題