C# - 当不为非必需字段提供值时,ModelState.IsValid为false

时间:2018-05-09 18:44:13

标签: c# html asp.net-mvc

我有一个MVC项目。 此项目的Insert代码为Insert() Model接受模型ModelState.IsValid

问题是,当我没有填写非必填字段false时,在客户端ReportedCount提交表单时ModelState.IsValidReportedCount

当该字段留空时,代码会自动将其选为0,因为它是一个int。我在调试期间尝试将其操作为不同的数字,但ModelState不会更改。 我知道错误只发生在ReportedCount字段。当我在调试期间进入public class Model { [Required(ErrorMessage = "ID field is required.")] public string ID { get; set; } [Range(0, 100000, ErrorMessage = "Invalid Number")] public int ReportedCount { get; set; } [Required] public string UserName { get; set; } } 时,唯一出现错误的密钥是 [HttpPost] public ActionResult Insert(Model model) { bool insert = false; if (ModelState.IsValid) { insert = Service.Insert(model); } // If information was inserted properly. if (insert == true) { TempData["message"] = "<b>Input successful :</b> Data entered for id " + model.ID; TempData["success"] = "true"; } else { // System error has priority to be displayed first. if (DatabaseError != null) { TempData["message"] = DatabaseError; TempData["success"] = "false"; } else { // Create element showing Model errors. string message = ""; message = message + "<b>There was an error inserting your data.</b> <ul>"; foreach (ModelState modelState in ViewData.ModelState.Values) { foreach (ModelError error in modelState.Errors) { message = message + "<li>" + error.ErrorMessage + "</li>"; } } message = message + DatabaseError + "</ul>"; TempData["message"] = message; TempData["success"] = "false"; } } return RedirectToAction("Index"); } 。所以,当然我继续并使用填充了数字的字段重新提交表单,在这种情况下它被接受(IsValid = true)。

以下是模型:

<html>
    <div class='form-group required'>
        <label class='control-label'>ID</label>
        <select name="ID" class='form-control required' id="DD_ID" required>
            <option value="">Select ID</option>
        </select>
    </div>
    <div class='form-group'>
            <label class='control-label'>Reported Count</label>
            <input class='form-control' type='number' name="ReportedCount">
    </div>
    <div class='form-row'>
            <input class='form-control' id='username' type='hidden' name="UserName" value="@(ViewBag.UserName)" />
    </div>
</html> 

以下是控制器操作:

{{1}}

输入的html代码(View):

{{1}}

0 个答案:

没有答案