Я пытаюсь создать форму о регистрации поставщика в компании.Одним из обязательных полей является Количество рабочих.
Я добавил валидатор диапазона в модели формы, как показано ниже.
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Required(ErrorMessage = "Form Number is required!")]
public int FormNo { get; set; }
[Required(ErrorMessage = "Please fill in the Number of Workers field!")]
[Range(0, 20, ErrorMessage = "Please enter positive number only!")]
public int NWorkers { get; set; }
Каждый раз, когда ввод выходит за пределы диапазона, он выдает исключение вместо отображенияErrorMessage.
System.Data.Entity.Validation.DbEntityValidationException: 'Validation
failed for one or more entities. See 'EntityValidationErrors' property
for more details.'
Если вход находится в пределах диапазона, он работает нормально.
Вот мой контроллер
public class FormController : Controller {
private AppDbContext db = new AppDbContext();
// GET: Form
public ActionResult Index() {
return View(db.Forms.ToList());
}
[HttpGet]
public ActionResult Create() {
return View();
}
[HttpPost]
public ActionResult Create(Form form) {
form.CreatedAt = DateTime.Now;
form.UpdatedAt = DateTime.Now;
db.Forms.Add(form);
db.SaveChanges();
return RedirectToAction("index", "form");
}
}
Вот мой взгляд
<form class="form-horizontal" action="@Url.Action("create", "form")" method="post">
@if (!ViewData.ModelState.IsValid) {
<div class="alert alert-danger">
@Html.ValidationSummary(false, "")
</div>
}
<div class="form-group">
<label class="col-md-3 control-label" for="FormNo">Form Number</label>
<div class="col-md-3">
@Html.TextBox("FormNo", null, new { @class = "form-control required", @required = "true" })
</div>
<span class="col-md-3 pull-right note">Note : * is required</span>
</div>
<div class="form-group">
<label class="col-md-3 control-label" for="NWorkers">Number of Workers</label>
<div class="col-md-3 required">
@Html.TextBox("NWorkers", null, new { @class = "form-control" })
<!-- <input type="text" class="form-control" id="NWorkers" name="NWorkers" value="0" /> -->
</div>
</div>
<div class="box-footer">
<div class="col-md-offset-3">
<button type="submit" class="btn btn-primary">
<i class="fa fa-btn fa-floppy-o"></i> Save
</button>
<a onclick="history.back();" class="btn btn-warning">
<i class="fa fa-reply"></i> Cancel
</a>
</div>
</div>
</form>
Редактировать
StackTrace
"на System.Data.Entity.Internal.InternalContext.SaveChanges () \ r \ n
в System.Data.Entity.Internal.LazyInternalContext.SaveChanges () \ r \ n
в System.Data.Entity.DbContext.SaveChanges () \r \ n в HSE.Controllers.FormController.Create (форма формы) в C: \ Users \ PC17A196 \ source \ repos \ HSE \ HSE \ Controllers \ FormController.cs: строка 28 \ r \ n в lambda_method (закрытие, ControllerBase,Object []) \ r \ n
в System.Web.Mvc.ActionMethodDispatcher.Execute (контроллер ControllerBase, параметры Object []) \ r \ n в System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, IDictionary 2 parameters)\r\n at
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext
controllerContext, ActionDescriptor actionDescriptor, IDictionary
2 параметры) \ r \ n в System.Web.Mvc.Async.AsyncControllerActionInvoker.b__39 (IAsyncResult asyncResult, ActionInvocation innerInvokeState) \ r \ nc. at.AsyncResultWrapper.WrappedAsyncResult 2.CallEndDelegate(IAsyncResult
asyncResult)\r\n at
System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase
1.End () \ r \ n в System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod (IAsyncResult asyncResult) \ r \ n в System.WebynithAinSyncInc.) \ r \ n в System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters. <> c__DisplayClass46.b__3f () "string