Member 13658833 Ответов: 0

Проверка формы не работает в MVC


я использую mvc5 для моего приложения в этой форме проверка успешно выполнена, и datavalidation будет проверен, но для недопустимых данных сообщение об ошибке не отображается.

Цитата:
мой взгляд таков, как показано ниже

@using (Html.BeginForm("TimeSheet", "TimeSheet", FormMethod.Post))
{
    @*@Html.AntiForgeryToken()*@
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
    <div class="row">
        <div class="col-sm-3">
            Select Date: <input type="text" id="Date" Name="Date" class="form-control" placeholder="Select Date">
            @Html.ValidationMessageFor(model => model.Date)
            @*<span class="field-validation-valid text-danger"
                      data-valmsg-for="StudentName" data-valmsg-replace="true">
                    The Date field is required.
                </span>*@
        </div>
        <div class=" col-sm-3">
            Select Employee:
            @Html.DropDownListFor(m => m.FullName, Model.EmployeeNamesList, new { @class = "form-control" })
            @Html.ValidationMessageFor(m => m.FullName)
        </div>
    <div class="row">
        <div class="col-sm-3">
            Select InTime:<input type="text" id="Intime" Name="Intime" class="form-control" placeholder="Select InTime">
            @Html.ValidationMessageFor(model => model.Intime)
        </div>
        <div class="col-sm-3">
            Select LunchOut Time:<input type="text" id="LunchOutTime" Name="LunchOutTime" class="form-control" placeholder="Select LunchOut Time">
            @Html.ValidationMessageFor(model => model.LunchOutTime)
        </div>
        <div class="col-sm-3">
            Select LunchIn Time:<input type="text" id="LunchInTime" Name="LunchInTime" class="form-control" placeholder="Select LunchIn Time">
            @Html.ValidationMessageFor(model => model.LunchInTime)
        </div>
        <div class="col-sm-3">
            Select OutTime:<input type="text" id="OutTime" Name="OutTime" class="form-control" placeholder="Select OutTime">
            @Html.ValidationMessageFor(model => model.OutTime)
        </div>
    </div>
    <br />
    <div class="row text-center">
        <input type="submit" value="Submit" style="align-items:center" id="viewdetails" class="btn btn-lg btn-primary" />
    </div>
}
@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}


Что я уже пробовал:

моя модель такова:
public class TimeSheet
    {
        public int ID { get; set; }
        public int EmpID { get; set; }
        //[Required]
        [Required]
        [Display(Name = "Select user type:")]
        public DateTime Date { get; set; }
        [Required]
        [Display(Name = "Select user type:")]
        public TimeSpan Intime { get; set; }
        [Required]
        [Display(Name = "Select user type:")]
        public TimeSpan LunchOutTime { get; set; }
        [Required]
        [Display(Name = "Select user type:")]
        public TimeSpan LunchInTime { get; set; }
        [Required]
        [Display(Name = "Select user type:")]
        public TimeSpan OutTime { get; set; }
        [Required]
        public string FullName { get; set; }
        public List<System.Web.Mvc.SelectListItem> EmployeeNamesList { get; set; }

    }

и мой код контроллера таков:
[HttpGet]
        public ActionResult TimeSheet()
        {
            using (SnovaHubEntities entities = new SnovaHubEntities())
            {
                Models.TimeSheet model = new Models.TimeSheet();
                model.EmployeeNamesList = GetEmployeenames(); 
                return View(model);
            }
        }
        public ActionResult ViewTimeSheet()
        {
            return View();
        }
        [HttpPost]
        public ActionResult TimeSheet(Models.TimeSheet model)
        {
            if (ModelState.IsValid) 
            {
                // my Code 
                        
            }
            return RedirectToAction("TimeSheet", "TimeSheet");
}


я не знаю, в чем ошибка в моем коде
Цитата:
и я не знаю об Аяксе так что не могли бы вы помочь мне решить эту проблему

Richard Deeming

Вы должны получать ошибки проверки на стороне клиента. Если это не так, то проверьте консоль ошибок вашего браузера на наличие ошибок.

Что касается ошибок проверки на стороне сервера, то вы их не увидите, если перенаправите. Обычно вы хотите что-то вроде:

[HttpPost]
public ActionResult TimeSheet(Models.TimeSheel model)
{
    if (!ModelState.IsValid)
    {
        // Validation failed; re-display the view with the validation errors:
        return View(model);
    }
    
    ...
}

0 Ответов