Asp.net mvc 为什么mvc验证在我的代码中不起作用?
我有一个带有验证的表单的简单MVC代码。但是我对name属性(必需)的验证不起作用。我在“InsertStudent”操作结果之后在控制器中创建断点 所以我运行它,在没有填写姓名文本框的情况下填写表单,我希望我的控制器中的“IsValid”为false。但这是真的 我的看法是: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
@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
是默认值。