提交带有必填字段的DropDownListFor表单

时间:2019-02-22 16:22:52

标签: asp.net-mvc

我从一个名为StampsCSEMonths_test的表中获得一个下拉列表。我试图提交表格之前需要下拉列表。 不管我是否选择,它总是提交表单的问题。

可能是什么问题? 查看:

walk(plots2, print)

型号:

@model WINHRAdmin.Models.CTS_Stamps

    @using (Html.BeginForm())
    {
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })

     @Html.DropDownListFor(model => model.stampscsemonths_id, ViewBag.StampsCSEMonths_test as IEnumerable<SelectListItem>, "", new { @class = "form-control  " })
      @Html.ValidationMessageFor(model => model.stampscsemonths_id, "", new { @class = "text-danger" })

    }

控制器:

namespace WINHRAdmin.Models
{
    public class CommitmentToServiceModel
    {

    }

    public class CTS_Stamps
    {
        [Required]
        [Range(1,Int32.MaxValue,ErrorMessage ="MonthYerar is required")]
        public int? stampscsemonths_id { get; set; }
    }


}

1 个答案:

答案 0 :(得分:0)

通常,您希望使用客户端库(例如jquery.validate)来阻止表单提交(如果表单无效)。这是一篇有关该主题的好文章:https://www.codeproject.com/Articles/718004/ASP-NET-MVC-Client-Side-Validation

服务器端MVC验证的常用模式几乎就是您正在执行的操作。您将[Required]属性放在数据模型属性上方。那很好。您的视图中有一个@ValidationMessageFor元素。也很好。

但是,您忘记了检查模型在控制器中是否有效。在处理结果之前,添加对ModelState.IsValid的检查。像这样:

            if (!ModelState.IsValid)
            {
                return View(collection); // assumes collection is the model
            }

如果用户提交了无效的表单,则在往返之后,他们将在缺少的字段旁边看到验证错误消息。

希望有帮助。