我有这门课
using System.ComponentModel.DataAnnotations;
using Argussoft.BI.DAL.Domain.Users;
namespace Argussoft.BI.DAL.DTOs.UserDTOs
{
public class CreateUserDto
{
[Required(ErrorMessage = "??????? ?????")]
[MaxLength(User.EmailLength, ErrorMessage = "???????????? ????? ?????? 40 ????????")]
[RegularExpression(User.NameRegularExpression, ErrorMessage = "????? ????? ????????? ?????? ????????? ???????, ??????, ?????????????, ?????")]
public string Name { get; set; }
[Required(ErrorMessage = "??????? Email")]
[MaxLength(User.EmailLength, ErrorMessage = "???????????? ????? ?????? ??????????? ????? 100 ????????")]
[RegularExpression(User.EmailRegularExpression, ErrorMessage = "??????? ?????????? ????? ??????????? ?????")]
public virtual string Email { get; set; }
[Required(ErrorMessage = "??????? ??? ????????????")]
[MaxLength(User.FullNameLength, ErrorMessage …Run Code Online (Sandbox Code Playgroud) 我在我的模型中使用asp.net mvc4我使用Maxlength属性但它不适用于字符串.只有Stringlength工作任何人都有同样的问题?如果有问题如何解决?它不适用于验证我的字段这是我的代码
(不工作)
[Required]
[MaxLength(80)]
[DisplayName("Contact Name:")]
public string ContactName { get; set; }
Run Code Online (Sandbox Code Playgroud)
(工作)
[Required]
[StringLength(80)]
[DisplayName("Contact Name:")]
public string ContactName { get; set; }
Run Code Online (Sandbox Code Playgroud) 我在我的模式中有这个:
[Required(AllowEmptyStrings = false, ErrorMessageResourceType = typeof(Registration), ErrorMessageResourceName = "NameRequired")]
[MinLength(3, ErrorMessageResourceType = typeof(Registration), ErrorMessageResourceName = "NameTooShort")]
public String Name { get; set; }
Run Code Online (Sandbox Code Playgroud)
最终结果如下:
<div class="editor-label">
<label for="Name">Name</label>
</div>
<div class="editor-field">
<input class="text-box single-line" data-val="true" data-val-required="Name is required" id="Name" name="Name" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="Name" data-valmsg-replace="true"></span>
</div>
Run Code Online (Sandbox Code Playgroud)
为什么MinLength会被编译器忽略?我怎么能"开启"?
我希望能够在用户选择"GO"按钮时在客户端触发表单验证.目前,当选择"GO"按钮时,它不会验证完整的表格.例如,如果我加载表单并选择"Go"按钮而不将焦点放在文本框中,则不会验证任何内容,并且val.Valid()返回true.如果我在文本框中输入了无效数据,则会对该单个项目进行验证; 当我选择"GO"按钮时,val.Valid()返回false.
所以我想要做的是,当用户选择一个按钮或其他事件时,我想触发所有表单验证.
我在MVC 3中这样做
public class TestValidationModel
{
[Required(ErrorMessage="UserName Is Required")]
[RegularExpression(@"(\S)+", ErrorMessage = "White space is not allowed")]
[StringLength(12, MinimumLength = 3)]
public string UserName { get; set; }
[Required(ErrorMessage="Password Is Required")]
[StringLength(20, MinimumLength = 3)]
public string Password { get; set; }
[Required(ErrorMessage="Email Address Is Required")]
[Display(Name = "Email Address")]
public string EmailAddress{ get; set; }
}
<script src="/BasicMvc3Example2/Scripts/jquery-1.4.4.js" type="text/javascript"></script>
<script src="/BasicMvc3Example2/Scripts/jquery-ui.js" type="text/javascript"></script>
<script src="/BasicMvc3Example2/Scripts/jquery.validate.js" type="text/javascript"></script>
<script src="/BasicMvc3Example2/Scripts/jquery.validate.unobtrusive.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
$("#butValidateForm").click(function(){
var val …Run Code Online (Sandbox Code Playgroud) 这可能是一般的但我想在editorfor字段中限制字符inpit的数量.
@html.EditorFor(m=>m.id,new {@maxlength="10"})
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用.
我对mvc3中的验证有疑问.内置验证看起来很棒.但是,我必须在一个案例中使用javascript,导致它与外观和感觉不一致(警报窗口与漂亮的红色文本).我们有一个表单,其中包含一些用于用户输入的字段.提交时,一些ajax代码会触发一个链接,该链接映射到一个控制器方法,该方法接受从表单提交的值并启动导致创建客户端数据库的进程.问题是:对字段(长度,字符等)进行验证的最佳方法是什么,因为没有模型直接映射到该表单上的字段?我的解决方案是编写一些javascript函数,但是有更简洁的方法吗?
<td>@Html.TextBox("NewClientId")</td>
...
<script language="javascript">
function ValidateFieldLength(min, max, element) {
var len = element.value.length;
if (len < min || len > max)
return false;
else {
return true;
}
}
function createNewClient() {
if (!ValidateFieldLength(3,3,document.getElementById('NewClientId'))) {
alert("Invalid Client ID length");
return;
}
$.ajax({
url: '/api/Clients',
type: 'PUT',
data: JSON.stringify({
ClientId: $('#NewClientId').val(),
Name: $('#NewClientName').val()
}),
contentType: 'application/json; charset=utf-8',
success: function (reponse) {
//alert(reponse.data.model.Id);
alert("Database created");
},
error: function (err) {
alert(err);
}
});
}
Run Code Online (Sandbox Code Playgroud) 问题: 我试图手动验证一些c#对象,而Validator忽略了与字符串长度相关的验证.
测试用例: 扩展这个使用[Required]属性的例子,我也想验证字符串不是太长,如下所示.
public class Recipe
{
//[Required]
public string Name { get; set; }
[MaxLength(1)] public string difficulty = "a_string_that_is_too_long";
}
public static void Main(string[] args)
{
var recipe = new Recipe();
var context = new ValidationContext(recipe, serviceProvider: null, items: null);
var results = new List<ValidationResult>();
var isValid = Validator.TryValidateObject(recipe, context, results);
if (!isValid)
{
foreach (var validationResult in results)
{
Console.WriteLine(validationResult.ErrorMessage);
}
} else {
Console.WriteLine("is valid");
}
}
Run Code Online (Sandbox Code Playgroud)
预期结果:错误:"难度太长."
实际结果: '有效' …