0

私の最後の質問はうまく答えられました。これもうまくいきます:)。

非常に紛らわしいエラーが表示されます。WebMatrix、asp.net、および razor を使用しています。これらのチュートリアルに従っています。http://www.asp.net/web-pages/tutorials/introducing-aspnet-web-pages-2 .

特定の単語のみを受け入れる検証が必要です。「コマース」や「S7」「サイエンス」など。1 つの単語のみを受け入れるようにすることはできますが、別の regEx ステートメントを入力すると、何も受け入れません。

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.StringLength(10,10, "Contact number can not be longer or shoter than 10 digits"));
Validation.Add("num", Validator.StringLength(13,13,"Is number must be 13 digits"));
Validation.Add("name", Validator.Regex("^[a-zA-Z ]+$", "Invalid format for a name"));  
Validation.Add("grade", Validator.Range(8,12, "Grades must be between 8 and 12"));
Validation.Add("course", Validator.Regex("S7"+"Comm", "Course not valid"));
//Validation.Add("course", Validator.Regex("^Comm$", "Course not valid blah"));

これが残りのコードです。前もって感謝します :)

@{  

    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.StringLength(10,10, "Contact number can not be longer or shoter than 10 digits"));
    Validation.Add("num", Validator.StringLength(13,13,"Is number must be 13 digits"));
    Validation.Add("name", Validator.Regex("^[a-zA-Z ]+$", "Invalid format for a name"));  
    Validation.Add("grade", Validator.Range(8,12, "Grades must be between 8 and 12"));
    Validation.Add("course", Validator.Regex("S7"+"Comm", "Course not valid"));
    //Validation.Add("course", Validator.Regex("^Comm$", "Course not valid blah"));

            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>
4

1 に答える 1

0

あなたのコードにある2つについては、これを試してください:

Validation.Add("course", Validator.Regex("^S7$|^Comm$", "Course not valid"));

潜在的な一致をさらに追加する必要がある場合は、パイプ文字で区切って追加するだけです。

Validation.Add("course", Validator.Regex("^S7$|^Comm$|^Science$", "Course not valid"));

ただし、データベースを使用しているため、データをより適切に正規化できるかどうかを確認する必要があります。コースをテキストとして保存するのではなく、テーブルに保存してリンクすることはできますか? チュートリアルに従っている場合、これはおそらくあなたが取り組んでいることの範囲外ですが、この方法でデータを検証する必要がまったくなくなるため、将来のために覚えておく必要があります.

正規表現の詳細については、次のチュートリアルをご覧ください: http://www.regular-expressions.info/tutorial.html

于 2013-11-04T15:48:11.247 に答える