【问题标题】:How can I make validation behave properly?如何使验证正常运行?
【发布时间】:2013-11-15 00:36:16
【问题描述】:

我正在使用 WebMatrix、asp.net 和 razor。我一直在关注these tutorials

此页面必须将值插入数据库,它一开始做得很好,但是当我添加验证时,它给了我这个错误“异常详细信息:System.OverflowException:对于 Int32 而言,值太大或太小。 "使用的数据库都是 nvarchar,除了 Techid 是一个 int。但是我不明白的是当我注释掉

Validation.Add("no", Validator.Range(9,10 ,"Contact number can not be longer or shorter than 10 digits"));
Validation.Add("num", Validator.Range(13,13,"Is number must be 13 digits"));
Validation.Add("name", Validator.Regex("^[a-zA-Z ]+$", "Invalid format for a name"))

效果很好。

@{  
    var db = Database.Open("ProjectTest");
    var Name = Request.Form["name"];
    var Surname = Request.Form["surname"];
    var IDNumber = Request.Form["num"];
    var Address = Request.Form["add"];
    var ContactNumber = Request.Form["no"];
    var Course = Request.Form["course"];
    var TechID = Request.Form["techID"];
    var grade = Request.Form["grade"];

    Validation.RequireField("name", "Name is needed");
    Validation.RequireField("surname", "Surname is needed");
    Validation.RequireField("num", "num is needed");
    Validation.RequireField("add", "add is needed");
    Validation.RequireField("no", "no is needed");
    Validation.RequireField("course", "course is needed");
    Validation.RequireField("grade", "grade is needed");

    Validation.Add("no", Validator.Range(9,10 ,"Contact number can not be longer or shoter than 10 digits"));
    Validation.Add("num", Validator.Range(13,13,"Is number must be 13 digits"));
    Validation.Add("name", Validator.Regex("^[a-zA-Z ]+$", "Invalid format for a name"));  

    if (IsPost)
    {
        if (Validation.IsValid())
        {
            var insertQuery = "INSERT INTO UserInfo (Name, Surname, IdNum, Address, ContNum, Course, Grade) VALUES (@0, @1, @2, @3 ,@4, @5, @6)";
            db.Execute( insertQuery, Name, Surname, IDNumber, Address, ContactNumber, Course, grade );
        }
    }      
    else
    {
          ModelState.AddFormError("There are some errors with your submission"); 
    }  
}


<!DOCTYPE html>

<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <a href="/Home">Home</a><br>
              If you are an Student that wants to register use this form.<br>
       <form method="post">
        <table>
            <tr>
            <td>Name:</td><td><input type="text" name="name"></td>
            </tr>
            <tr>
            <td>Surname:</td><td><input type="text" name="surname"></td>
            </tr>
            <tr>
            <td>ID Number:</td><td><input type="text" name="num"><br></td>              
            </tr>
            <tr>
            <td>Address:</td><td><input type="text" name="add"><br></td>
            </tr>
            <tr>
            <td>Contact Number:</td><td><input type="text" name="no"><br></td>
            </tr>
            <tr>
            <td>Course:</td><td><input type="text" name="course" value=""></td>
            </tr>
            <tr>
            <td>Grade:</td><td><input type="text" name="grade"></td>
            </tr>
            <tr><td><input type="submit" value="Submit"></td>
            </tr>
        </table>
           @Html.ValidationMessage("name")<br>
           @Html.ValidationMessage("surname")<br>
           @Html.ValidationMessage("num")<br>
           @Html.ValidationMessage("add")<br>
           @Html.ValidationMessage("no")<br>
           @Html.ValidationMessage("course")<br>
           @Html.ValidationMessage("grade")
       </form>  
       <select name="courses">
           <option value="1" id="test">S7</option>
           <option value="2">Commerce</option>
       </select>
    </body>
</html>

【问题讨论】:

    标签: asp.net razor webmatrix


    【解决方案1】:

    Validator.Range 将验证数值是否介于最小值和最大值之间。看起来你想验证输入的长度,所以你应该使用Validator.StringLength()

    【讨论】:

    • 既然我在这里,你能告诉我我使用的是什么语言吗?我知道这听起来很愚蠢,但我认识的两个人不懂这种语言。
    • 我不确定这是否是您的意思,但您在此代码中使用的编程语言是 C#。
    • 我明白了...所以这不是 ASP.NET?
    • 它是 ASP.NET... 但您使用的语言是 C#(您也可以使用 VB)。这是一个使用 C# 作为语言的 ASP.NET 网页。
    • 可能让您提到的人感到困惑的是您的网站正在使用“asp.net web pages”(而不是“asp.net webforms”或“asp.net mvc”)。 “Web Pages”是 webMatrix 附带的一种简化类型的 Web 项目。使用 Visual Studio,您只能获得 webforms 和 mvc。你可以在这里阅读 3 种类型的项目:w3schools.com/aspnet/default.asp
    猜你喜欢
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 2014-12-31
    • 2020-02-06
    • 2017-12-09
    相关资源
    最近更新 更多