未提出必填字段验证 [英] Required field validation not raised

查看:108
本文介绍了未提出必填字段验证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

im使用mvc2应用程序..i为文本框提供了必需的字段验证器,但在文本框为空时不会触发.错误如


参数化查询'(@Name varchar(10),@ Email varchar(20),@ Comment varchar(10))插入器"期望参数"@Name",但未提供."

并且错误值也保存在数据库中,甚至验证抬高(Name = 785保存在db中,但我确定名称的验证必须是character.this验证抬高,当我们在该文本框中输入数字但保存到db
时)
我的代码:

Studentcontroller.cs

im using mvc2 application..i give required field validator for textbox but it not fire when textbox is empty.the error occur like


"The parameterized query ''(@Name varchar(10),@Email varchar(20),@Comment varchar(10))inser'' expects the parameter ''@Name'', which was not supplied."

And also error value is saved in database even validation raise(Name=785 is saved in db but i fix the validation for name is must be character.this validation raise when we give number in that textbox but saved into db

My code:

Studentcontroller.cs

public class StudentController : Controller
    {
        
        //
        // GET: /Student/

        public ActionResult GetStudent()
        {
            return View();
        }
        [HttpPost]

        public ActionResult GetStudent(StudentModel model)
        {
            SqlConnection connObj = new SqlConnection();
            
            Response.Write(model.Name + model.Comment + model.Email); 
            
            connObj.ConnectionString = "Data Source=MOB-PERLZ-WS192;User ID=sa;Password=Mobius@123;Initial Catalog=MVC";
            connObj.Open();
            SqlCommand comm = new SqlCommand("insert into student(Name,Email,Comment) values(@Name,@Email,@Comment)", connObj);
           
            comm.Parameters.Add("@Name", SqlDbType.VarChar, 10).Value = model.Name;
            comm.Parameters.Add("@Email", SqlDbType.VarChar, 20).Value = model.Email;
            comm.Parameters.Add("@Comment", SqlDbType.VarChar, 10).Value = model.Comment;

            int result = comm.ExecuteNonQuery();
            if (result != 0)
                Response.Write(" added");
            else
                Response.Write("Error");

            return View();
        }

    }<pre lang="c#">




GetStudent.aspx






GetStudent.aspx



<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

    <h2>GetStudent</h2>

 <% Html.EnableClientValidation(); %>
    <% using (Html .BeginForm() ){%>
<%--        <%= Html.ValidationSummary(true, "A few fields are still empty") %>--%>
        <fieldset>
             <legend>Student Detail</legend>
            <div class="editor-label">
                <%= Html.LabelFor(model=>model .Name ) %>
            </div>
            <div class="editor-field">
                <%= Html.TextBoxFor(model => model.Name)%>
                <%= Html.ValidationMessageFor(model =>model .Name ) %>
            </div>
            <div class="editor-label">
                <%= Html.LabelFor(model =>model .Email ) %>
            </div>
            <div class="editor-field">
                <%= Html.TextBoxFor(model => model.Email)%>
                <%=Html.ValidationMessageFor(model => model.Email)%>
            </div>
            <div class="editor-label">
                <%= Html.LabelFor(model =>model .Comment ) %>
            </div>
            <div class="editor-field">
                <%= Html.TextAreaFor(model => model.Comment, 10, 25, null)%>
                <%= Html.ValidationMessageFor(model => model.Comment)%>
            </div>
            <p>
                <input type="submit" value="Submit" />
            </p>
        </fieldset>
        <p id="result"><%=TempData["Message"] %></p>
    <% } %>

</asp:Content>





StudentModel.cs






StudentModel.cs


public class StudentModel
   {
       [Required]
       [StringLength(10, ErrorMessage = "must be under 10")]
       [RegularExpression("^([a-zA-z\\s]{4,32})$", ErrorMessage = "Only Alphabets are allowed")]
       [DisplayName("Name")]
       public string Name { get; set; }


       [Required(ErrorMessage = "* Required")]
       [DataType(DataType.EmailAddress, ErrorMessage = "Your email address contains some errors")]
       [DisplayName("Email address")]
       [RegularExpression("^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$", ErrorMessage = "Enter a Valid Email")]
       public string Email { get; set; }


       //[Required(ErrorMessage = "* Required")]

       [Required ]
       public string Comment { get; set; }



   }

推荐答案

",ErrorMessage = )] [DisplayName(" )] 公共 字符串名称{ get ; 设置; } [必需(ErrorMessage = " )] [DataType(DataType.EmailAddress,ErrorMessage = " )] [DisplayName(" )] [RegularExpression("
", ErrorMessage = "Only Alphabets are allowed")] [DisplayName("Name")] public string Name { get; set; } [Required(ErrorMessage = "* Required")] [DataType(DataType.EmailAddress, ErrorMessage = "Your email address contains some errors")] [DisplayName("Email address")] [RegularExpression("^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}


",ErrorMessage = 输入有效的电子邮件")] 公共 字符串电子邮件{ get ; 设置; } // [必需(ErrorMessage ="*必需")] [必需的 ] 公共 字符串评论{ get ; 设置; } }
", ErrorMessage = "Enter a Valid Email")] public string Email { get; set; } //[Required(ErrorMessage = "* Required")] [Required ] public string Comment { get; set; } }


是的,因为您没有在Controller中检查页面是否有效.
尝试阅读有关ASP.NET MVC模型的示例使用DataAnnotations和ModelValidators进行验证 [ ^ ].这将帮助您进行指导.


--Amit
Yes, because in Controller you are not checking whether your page is valid or not.
Try reading A sample on ASP.NET MVC Model Validation using DataAnnotations and ModelValidators[^]. This will help you to guide through.


--Amit


这篇关于未提出必填字段验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆