Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 为什么mvc验证在我的代码中不起作用?_Asp.net Mvc_Validation_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc 为什么mvc验证在我的代码中不起作用?

Asp.net mvc 为什么mvc验证在我的代码中不起作用?,asp.net-mvc,validation,asp.net-mvc-4,Asp.net Mvc,Validation,Asp.net Mvc 4,我有一个带有验证的表单的简单MVC代码。但是我对name属性(必需)的验证不起作用。我在“InsertStudent”操作结果之后在控制器中创建断点 所以我运行它,在没有填写姓名文本框的情况下填写表单,我希望我的控制器中的“IsValid”为false。但这是真的 我的看法是: @model HelloWorld.Models.student @{ Layout = null; } <!DOCTYPE html> <htm

我有一个带有验证的表单的简单MVC代码。但是我对name属性(必需)的验证不起作用。我在“InsertStudent”操作结果之后在控制器中创建断点

所以我运行它,在没有填写姓名文本框的情况下填写表单,我希望我的控制器中的“IsValid”为false。但这是真的

我的看法是:

 @model HelloWorld.Models.student

    @{
        Layout = null;
    }

    <!DOCTYPE html>

    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>AddStudent2</title>
    </head>
    <body>
        <script src="~/Scripts/jquery-1.8.2.min.js"></script>
        <script src="~/Scripts/jquery.validate.min.js"></script>
        <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>

        @using (Html.BeginForm("InsertStudent","home",FormMethod.Post)) {
            @Html.AntiForgeryToken()
            @Html.ValidationSummary(true)

            <fieldset>
                <legend>student</legend>

                <div class="editor-label">
                   @Html.LabelFor(model => model.Name)
                   @Html.ValidationMessageFor(model => model.Name)
               </div>
               <div class="editor-field">
                    @Html.EditorFor(model => model.Name)
                     @Html.ValidationMessageFor(model => model.Name)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.Family)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.Family)
                    @Html.ValidationMessageFor(model => model.Family)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.Age)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.Age)
                    @Html.ValidationMessageFor(model => model.Age)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.Email)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.Email)
                    @Html.ValidationMessageFor(model => model.Email)
                </div>

                <p>
                       <input type="submit" value="Create" />
                </p>
            </fieldset>
        }

        <div>
            @Html.ActionLink("Back to List", "Index")
        </div>
    </body>
    </html>
模型是:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;

namespace HelloWorld.Models
{
    public class student
    {
        public int Id { get; set; }

        public string Name { get; set; }
         [Required]
        public string Family { get; set; }
         [Required]
        //[MaxLength(5)]
        public int Age { get; set; }


        public string Email { get; set; }

    }
}

请帮助我

您的Name属性上没有
必需的
属性。添加它,验证就会失败

public class student
{
    public int Id { get; set; }
    [Required]
    public string Name { get; set; }
    [Required]
    public string Family { get; set; }
    [Required]
    public int Age { get; set; }
    public string Email { get; set; }
}

您的Name属性上没有
必需的
属性。添加它,验证就会失败

public class student
{
    public int Id { get; set; }
    [Required]
    public string Name { get; set; }
    [Required]
    public string Family { get; set; }
    [Required]
    public int Age { get; set; }
    public string Email { get; set; }
}

我能解决这个问题

我不得不将
[required]
属性放在我的
name
属性下面,而不是放在上面

public class student
    {
        public int Id { get; set; }
         [Required(AllowEmptyStrings = false)]
        public string Name { get; set; }
        [Required(AllowEmptyStrings=false)]
        public string Family { get; set; }
      [Required(AllowEmptyStrings = false)]
        //[MaxLength(5)]
        public int Age { get; set; }


        public string Email { get; set; }

    } 

我能解决这个问题

我不得不将
[required]
属性放在我的
name
属性下面,而不是放在上面

public class student
    {
        public int Id { get; set; }
         [Required(AllowEmptyStrings = false)]
        public string Name { get; set; }
        [Required(AllowEmptyStrings=false)]
        public string Family { get; set; }
      [Required(AllowEmptyStrings = false)]
        //[MaxLength(5)]
        public int Age { get; set; }


        public string Email { get; set; }

    } 

您的“名称”属性不是必需的。你的“家庭”财产是。这是一个输入错误?是的,没错。您应该更新您的示例和代码,以便在Name属性上添加所需的属性。如果验证仍然没有失败,请告知我们。您的“名称”属性不是必需的。你的“家庭”财产是。这是一个输入错误?是的,没错。您应该更新您的示例和代码,以便在Name属性上添加所需的属性。如果验证仍然没有失败,请告诉我们。您不需要
AllowEmptyStrings=false
(默认值为
false
)请不要浪费时间回答将关闭的主题外问题。如果验证失败,请告诉我们。您的意思是我无论如何都不能在name属性上具有必需的属性?!!是的,您确实需要
[Required]
属性。如果不添加它,则只需要不可为null的类型(字符串可为null,因此默认情况下它被视为可选的)您不需要
AllowEmptyStrings=false
(默认值为
false
)请不要浪费时间回答主题外的问题,这些问题将被关闭NDRR是的,它失败了。你的意思是我无论如何都不能在name属性上有必需的属性?!!是的,您确实需要
[Required]
属性。如果不添加它,则只需要不可为null的类型(字符串是可为null的,因此默认情况下它被视为可选的)。请记住,元数据(关于属性/方法或字面上的任何内容的信息)将始终位于它描述的内容之前:-)注意:正如@Stephen Muecke所指出的,
AllowEmptyStrings=false
是多余的,因为
false
是默认值。请记住,元数据(关于属性/方法或字面上的任何内容的信息)将始终位于它所描述的内容之前:-)注意:正如@Stephen Muecke所指出的,
AllowEmptyStrings=false
是多余的,因为
false
是默认值。