required attribute not working in asp.net mvc

前端 未结 6 1542
离开以前
离开以前 2020-12-03 19:53

I have a simple strongly-typed view.

@model GoldForGold.Models.LogonModel
@{
    ViewBag.Title = \"Logins\";
    Layout = \"~/Views/Shared/_Layout.cshtml\";         


        
相关标签:
6条回答
  • 2020-12-03 20:28

    Here is the complete solution:

    1. Add the following scripts to your view:

      <script src='@Url.Content("~/Scripts/jquery-1.8.2.js")' type='text/javascript'></script>    
      <script src='@Url.Content("~/Scripts/jquery.validate.js")' type='text/javascript'>         </script>
      <script src='@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")' type='text/javascript'></script>
      
    2. Enable Validation in Web.Config:

      <appSettings>
      <add key="ClientValidationEnabled" value="true" />
      <add key="UnobtrusiveJavaScriptEnabled" value="true" />
      </appSettings>
      
    3. Add validation element in the view:

      @Html.ValidationMessageFor(model => model.UserName)
      
    4. Add Required attribute to you model`s element.

      [Required(ErrorMessage="please enter username")]
      public string UserName { get; set; }
      
    0 讨论(0)
  • 2020-12-03 20:34

    For client side validation you need jquery and jquery validation.

    after that client side validation must be enabled in config:

    <appSettings> 
    ...
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
    

    for server side validation you can check your validation state with:

    ModelState.IsValid;
    
    0 讨论(0)
  • 2020-12-03 20:36

    My fix for my problem was to use this line of code in the model class.

    using System.ComponentModel.DataAnnotations;
    

    be aware that there is another namespace (Microsoft.Build.Framework) that also supports [Required] annotation.

    0 讨论(0)
  • 2020-12-03 20:41

    One other thing to be wary of with [Required] is when using it on an integer field, not just when storing a numeric value, but also, say, when storing the id of the selected value of a dropdown/select list.

    [Required] won't work in that situation because an integer property can never be null and so always has a default value of zero. [Required] is checking that the property has a value, and zero is considered a value, so the check will pass.

    In that case either declare the property as a nullable integer instead:

        [Required]
        public int? LanguageId { get; set; } // note the int is now nullable
    

    or alternatively use the Range attribute to stop zero being an acceptable value:

        [Range(1, int.MaxValue)]
        public int LanguageId { get; set; }
    
    0 讨论(0)
  • 2020-12-03 20:50
    • Steps for solution:

    1- Add the scripts to view:

    <script src='@Url.Content("~/Scripts/jquery-1.8.2.js")' type='text/javascript'></script>       
    <script src='@Url.Content("~/Scripts/jquery.validate.js")' type='text/javascript'>         
    </script>
    <script src='@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")' type='text/javascript'></script>
    

    2- Enable Validation in Web.Config:

    <appSettings>
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    </appSettings>
    

    3- Add validation html helper in the view:

    @Html.ValidationMessageFor(model => model.UserName)
    

    4- Add Required attribute to your model`s element:

    [Required(ErrorMessage="please enter username")]
    public string UserName { get; set; }
    
    0 讨论(0)
  • 2020-12-03 20:51

    For the record, you can include the following code at the end of your view, to make sure that the [Required] attribute pops up in the user interface:

    @section Scripts {
        @Scripts.Render("~/bundles/jqueryval")
    }
    
    0 讨论(0)
提交回复
热议问题