DropDownList验证

布赖恩

如果我单击提交按钮但未从DropDownList中选择一个值,则会在Create Action中的DropDownList上收到验证错误消息。

我收到的验证错误是值“”无效我想验证错误消息说需要状态!反而。

我在ViewModel的StId属性中添加了所需的验证属性,但这不能解决问题。

客户模型

    public class Customer
{
    public int CustId { get; set; }
    public string CustFirstName { get; set; }
    public string CustLastName { get; set; }

    public int StId { get; set; }
    public State State { get; set; }
}

状态模型

    public class State
{
    public int StId { get; set; }
    public string StAbbr { get; set; }

    public List<Customer> Customers { get; set; }
}

CustomerFormViewModel

    public class CustomerFormViewModel
{
    public int CustId { get; set; }

    [Required(ErrorMessage = "First Name is required!")]
    [Display(Name = "First Name")]
    public string CustFirstName { get; set; }

    [Required(ErrorMessage = "Last Name is required!")]
    [Display(Name = "Last Name")]
    public string CustLastName { get; set; }

    [Required(ErrorMessage = "State is required!")]
    [Display(Name = "State")]
    public int StId { get; set; }

    public IEnumerable<State> States { get; set; }
}

客户控制器

    public class CustomerController : Controller
{
    private OneClickAwayDbContext _context;

    public CustomerController(OneClickAwayDbContext context)
    {
        _context = context;
    }

    public ActionResult Index()
    {
        return View(_context.Customers.ToList());
    }

    public ActionResult Create()
    {
        var states = _context.States.ToList();
        var viewModel = new CustomerFormViewModel
        {
            States = states
        };

        return View(viewModel);
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(CustomerFormViewModel vm)
    {
        if (ModelState.IsValid)
        {
            var customer = new Customer();
            {
                customer.CustFirstName = vm.CustFirstName;
                customer.CustLastName = vm.CustLastName;
                customer.StId = vm.StId;
            }

            _context.Customers.Add(customer);
            _context.SaveChanges();
            return RedirectToAction("Index");
        }

        else
        {
            var stateViewModel = new CustomerFormViewModel
            {
                States = _context.States.ToList()
            };
            return View("Create", stateViewModel);
        }
    }
}

Create.chtml

    @using (Html.BeginForm("Create", "Customer"))
{
    <div class="form-group">
        @Html.LabelFor(c => c.CustFirstName)
        @Html.TextBoxFor(c => c.CustFirstName, new { @class = "form-control" })
        @Html.ValidationMessageFor(c => c.CustFirstName)
    </div>

    <div class="form-group">
        @Html.LabelFor(c => c.CustLastName)
        @Html.TextBoxFor(c => c.CustLastName, new { @class = "form-control" })
        @Html.ValidationMessageFor(c => c.CustLastName)
    </div>

    <div class="form-group">
        @Html.LabelFor(s => s.StId)
        @Html.DropDownListFor(s => s.StId, new SelectList(Model.States, "StId", "StAbbr"), "", new { @class="form-control"})
        @Html.ValidationMessageFor(s => s.StId)
    </div>

    <div class="form-group">
        <button type="submit" class="btn btn-primary">Submit</button>
    </div>
}
拉维A.

请在您的cshtml文件中包含jquery.validate.js和jquery.validate.unobtrusive.js

<script src="~/lib/jquery-validation/dist/jquery.validate.js"></scri‌​pt>     
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.uno‌​btrusive.js"></scrip‌​t>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章