比方說,我創建了一個屬性爲int?
類型的模型。MVC4模型綁定和int /十進制溢出
public class MyModel
{
[Range(-100, 100, ErrorMessage="Too large")]
public int? MyValue { get; set; }
}
在視圖中,我使用它作爲表單中的文本框發回服務器。
@using (Html.BeginForm())
{
<p>Enter some value</p>
<div>@Html.TextBoxFor(m => m.MyValue)</div>
<div>@Html.ValidationMessageFor(m => m.MyValue)</div>
<input type="submit" value="Submit" />
}
這裏是控制器代碼
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new MyModel();
return View(model);
}
[HttpPost]
public ActionResult Index(MyModel model)
{
return View(model);
}
}
現在,如果我在文本框中輸入一個非常大的數字,e.g 111111111111111111111111111111111111111111111111111111111111111111111111111111
,這是肯定的過大的整數數據類型。在回帖後,得到消息The value '111111111111111111111111111111111111111111111111111111111111111111111111111111' is invalid.
但我沒有辦法使用我在我的模型中定義的錯誤消息(本地化等)。
除非您正在進行一些客戶端驗證,否則您的用戶可以輕鬆地在文本框中輸入'abcdefg'。你應該在你的控制器上檢查'ModelState.IsValid',並處理一個輸出給用戶的錯誤。但是,真的,你應該做一些客戶端,也許只允許在文本框中的數字,並設置一個上限? – James 2015-04-01 14:45:23
是的,模型狀態肯定無效。這只是我的測試代碼,無論如何我都忽略了它。 – hardywang 2015-04-01 15:24:29
由於您輸入的值超出了'int'的範圍,因此首先生成「..is invalid」錯誤(在您的範圍驗證之前) – 2015-04-02 00:14:48