Hi, i added in my register view 3 dropdownlist to selecte the date of birth ( DAY , MONTH, YEAR)
@Html.DropDownList("DateOfBirthDay", Enumerable.Range(1, 31).Select(i => new SelectListItem { Value = i.ToString(), Text = i.ToString() }), "-- Select Day --") @Html.DropDownList("DateOfBirthMonth", Enumerable.Range(1, 12).Select(i => new SelectListItem { Value = i.ToString(), Text = System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat.GetMonthName(i) }), "-- Select Month --") @Html.DropDownList("DateOfBirthYear", Enumerable.Range(1900, 109).Select(i => new SelectListItem { Value = i.ToString(), Text = i.ToString() }), "-- Select Year --")
and i add them in my controller
// POST: /Account/Register
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(string DateOfBirthDay , string DatehOfBirthMonth, string DateOfBirthYear, RegisterViewModel model)
but i would love to make them as a required files and if they are not, to return the form..
how to do?
Easiest way to validate a dropdown list is to check if the element contains a non-null value:
change button-type from submit to button
@using (Html.BeginForm()) { ... form elements here ... <input id="submitBtn" type="button" value="Submit" /> }
Then handle the on-click event to check if valid, then submit if validation passes
<script> $("#submitBtn").on("click", function () { var canSubmit = true; if ($("#DateOfBirthDay").val() == "") { canSubmit = false; alert = "Please select a day"; } if ($("#DateOfBirthMonth").val() == "") { canSubmit = false; alert("Please select a month"; } if ($("#DateOfBirthYear").val() == "") { canSubmit = false; alert("Please select a year"; } if (canSubmit) { $("form").submit(); } }); </script>
Alternatively, if these are model properties (DateOfBirthDay, DateOfBirthMonth, DateOfBirthYear), then you could give each a "[Required]" annotation in the model, and use a DropDownFor helper with a ValidationMessageFor helper message:
@Html.DropDownListFor(model => model.DateOfBirthDay, ...) @Html.ValidationMessageFor(model => model.DateOfBirthDay)
using this method, it basically takes care of itself.
Not directly related to your question, but have you considered using a DatePicker. It provides better user experience and also solves your issues. You can use a JQuery UI DatePicker or some other DatePicker
Demo of JQueryUI DatePicker http://jqueryui.com/datepicker/
Integrating this in MVC