validate a dropdownlist in asp.net mvc

前端 未结 4 1319
遇见更好的自我
遇见更好的自我 2020-12-01 01:12
//in controller
ViewBag.Categories = categoryRepository.GetAllCategories().ToList();

//in view
 @Html.DropDownList(\"Cat\", new SelectList(ViewBag.Categories,\"ID\"         


        
4条回答
  •  孤城傲影
    2020-12-01 01:19

    I just can't believe that there are people still using ViewData/ViewBag in ASP.NET MVC 3 instead of having strongly typed views and view models:

    public class MyViewModel
    {
        [Required]
        public string CategoryId { get; set; }
    
        public IEnumerable Categories { get; set; }
    }
    

    and in your controller:

    public class HomeController: Controller
    {
        public ActionResult Index()
        {
            var model = new MyViewModel
            {
                Categories = Repository.GetCategories()
            }
            return View(model);
        }
    
        [HttpPost]
        public ActionResult Index(MyViewModel model)
        {
            if (!ModelState.IsValid)
            {
                // there was a validation error =>
                // rebind categories and redisplay view
                model.Categories = Repository.GetCategories();
                return View(model);
            }
            // At this stage the model is OK => do something with the selected category
            return RedirectToAction("Success");
        }
    }
    

    and then in your strongly typed view:

    @Html.DropDownListFor(
        x => x.CategoryId, 
        new SelectList(Model.Categories, "ID", "CategoryName"), 
        "-- Please select a category --"
    )
    @Html.ValidationMessageFor(x => x.CategoryId)
    

    Also if you want client side validation don't forget to reference the necessary scripts:

    
    
    

提交回复
热议问题