标签: data-annotations

那么是否在ASP.NET MVC 3中构建了[Email]属性?

[Email]属性将被构建到ASP.NET MVC 3中,就像它在期货中一样?它现在可用还是不可用?我想这是一个相当愚蠢的问题,但我花了一些时间谷歌搜索,并没有找到任何正常的答案.

电子邮件正则表达式:

"^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$"
Run Code Online (Sandbox Code Playgroud)

.net validation attributes data-annotations asp.net-mvc-3

11
推荐指数
3
解决办法
1万
查看次数

使用不显眼的javascript/MVC3和DataAnnotations验证电子邮件地址

jQuery Validation使验证电子邮件地址变得简单:

$("someForm").validate({
    rules: {
        SomeField: {
            required: true,
            email: true,
            remote: {
                type: "POST",
                url: "CheckEmail"
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

这使得SomeField成为必需,必须格式化为电子邮件地址,并且还执行对CheckEmail操作的远程调用(检查重复项).

我喜欢让事情变得尽可能简单,所以我可以用Data Annotations做很多相同的事情:

public class RegisterModel {
    [Required]
    [Remote("CheckEmail", "Home", HttpMethod="POST")]
    public string SomeField { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

ASP.net MVC 3/Data Annotations是否有内置/简单的方法来验证以确保电子邮件地址的格式正确?

如果可能的话,我希望它能产生不引人注目的javascript.

c# unobtrusive-javascript data-annotations unobtrusive-validation asp.net-mvc-3

11
推荐指数
3
解决办法
2万
查看次数

ASP.NET MVC显示日期没有时间

我的模型字段以下列方式装饰:

[DataType(DataType.Date)]
[Display(Name = "Date of birth")]
public string DateOfBirth { get; set; }
Run Code Online (Sandbox Code Playgroud)

当我想使用以下代码在视图中显示值时:

<%: Html.DisplayFor(m => m.DateOfBirth) %>
Run Code Online (Sandbox Code Playgroud)

问题是日期与其时间值一起显示.我想知道为什么它不考虑DateType属性并且只显示没有时间的日期值.我知道我可以为DateTime创建一个显示模板,但在其他情况下,除了出生日期,我想与日期一起显示时间.如何解决问题?

c# asp.net-mvc datetime attributes data-annotations

11
推荐指数
4
解决办法
2万
查看次数

可以浏览DataAnnotations的自定义Html帮助程序

说我有这样的模特

public class User
{
    [Required]
    [StringLength(14, ErrorMessage = "Can only be 14 characters long")]
    public string UserName;

}
Run Code Online (Sandbox Code Playgroud)

我想创建一个这样的Html帮助器:

@Html.ValidatableEditorFor(m => m.UserName)
Run Code Online (Sandbox Code Playgroud)

这样它就会向jQuery Vaidation插件发出一个正确格式的文本字段,以便能够验证,如下所示:

   <input type="text" class="required" maxlength="14" />
Run Code Online (Sandbox Code Playgroud)

根据我的研究,似乎没有办法迭代MetaDataModel中的所有数据注释,以便我可以检查哪一个适用于jQuery验证.

我如何设想它在伪代码中工作:

    var tag = new TagBuilder("input");
    tag.mergeAttribute("type", "text");
    foreach(var attribute in metadata.attributes)
    {
       CheckForValidatableAttribute(attribute, tag);
    }

...
    private void CheckForValidatableAttribute(DataAnnotation attribute, TagBuilder tag)
    {
        switch(attribute.type)
       {
          case Required:
             tag.addClass("required");
             break;
          case StringLength
             tag.mergeAttribute("maxlength", attribute.value)
             break;
       }
    }
Run Code Online (Sandbox Code Playgroud)

我怎么能去实现这样的帮助呢?我希望它能够处理数据注释,这样我就不必复制验证文字了.

例如,像TextEditorFor这样的当前Html帮助程序会将可验证的属性附加到其输出字段.它是如何做到的,我如何实现自己的实现?

干杯

asp.net-mvc modelmetadata data-annotations

11
推荐指数
1
解决办法
2856
查看次数

Asp.Net MVC:一些未本地化的默认错误消息?

我有一个完全本地化的网站,主要是法语/英语/德语.

现在,一切都很顺利,但我确实注意到asp.net MVC的一些错误消息的问题.

我的模型中有一个属性:

[Required]
[LocalizedDisplayName("PublicationDate", NameResourceType = typeof(LocalizationResources.Views.Composer.BaseInfoForm))]
public DateTime PublicationDate { get; set; }
Run Code Online (Sandbox Code Playgroud)

LocalizedDisplayname是DisplayNameAttribute的扩展,它位于Resx文件中以获取正确的翻译

线程CurrentCulture和CurrentCultureUI在fr-FR中,因此消息应该以法语显示(就像我的[Required]属性一样,自动显示"Le champ Publication est requis").

但是在DateTime的情况下,如果我输入的东西不是日期,验证器只返回一个" The value 'asdfasdf' is not valid for Publication."所以:

  • 为什么MVC有时会以法语返回错误信息,有时用英语回复,同样的形式(我确切地说,这是默认的错误信息)
  • 如何通过指示诸如"La valeur {0} n'est pas une date valide pour le champ {1}"之类的文本来通用地替换此消息

非常感谢你

validation asp.net-mvc localization data-annotations

11
推荐指数
1
解决办法
9757
查看次数

用于电话号码或社会安全号码的DisplayFormat.DataFormatString

有没有办法可以DisplayFormat在视图模型属性上使用该属性来应用DataFormatString社会安全号码或电话号码的格式?我知道我可以用javascript做到这一点,但如果可能的话,我更愿意让模型处理它.

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "???????")]
public string Ssn { get; set; }
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc formatting data-annotations asp.net-mvc-4

11
推荐指数
1
解决办法
3万
查看次数

未找到System.ComponentModel.DataAnnotations.Schema

我在Visual Studio 2012中遇到涉及System.ComponentModel.DataAnnotations.Schema命名空间的问题.它告诉我,ForeignKeyAttribute无法解析,过去的解决方案是添加下面注释掉的using语句.VS2012无法像VS2010那样解析Schema名称空间.最近的.Net版本中是否有任何变化会导致此问题?如果是这样,我该如何解决它们?

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ComponentModel.DataAnnotations; // using System.ComponentModel.DataAnnotations.Schema; namespace Data { public class AffiliateUser { [Key, ForeignKey("User")] public int UserId { get; set; } [StringLength(50)] public string AffiliateUserKey { get; set; } public Guid ApiKey { get; set; } public string PasswordHash { get; set; } public bool IsDeleted { get; set; } } }
Run Code Online (Sandbox Code Playgroud)

.net c# data-annotations asp.net-mvc-4

11
推荐指数
2
解决办法
3万
查看次数

MVC DataAnnotation接受无空间

我正在开发MVC5中的登录视图.

我想在ViewModel级别设置一个DataAnnotation来声明该字段不接受空格.

MVC中是否有数据注释(像[NoSpaces]这样的东西可以用来不允许字符串字段包含"空格"?

model-view-controller asp.net-mvc data-annotations asp.net-mvc-3

11
推荐指数
1
解决办法
1万
查看次数

使用EmailAddressAttribute验证.net中的电子邮件字符串,但不在属性上验证

我希望能够这样做:

string email = "some@email.com";
bool isValid = IsValidEmail(email);
//returns true
Run Code Online (Sandbox Code Playgroud)

...但是使用Microsoft已经在EmailAddressAttribute中提供的逻辑.

IsValidEmail有数百个好的和坏的实现,当我可以使用微软已经考虑过的东西时,我不想添加自己的.按理说,他们会比我做得更好.

在最近的ASP.Net版本中,我们有System.ComponentModel.DataAnnotations,它为我们提供了优秀的EmailAddressAttribute,它允许我们像这样装饰我们的模型:

public class SomeModel
{
    [EmailAddress]
    public string Email { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这个类是密封的,所以我不能调用EmailAddressAttribute.IsValid()

有没有一种好方法可以利用微软已经做过的事情?在.Net框架中的某个地方是否有一个方法,让我测试字符串对数据注释,我忽略了?

有点像......:

var emailChecker = new DataAnnotationsChecker<EmailAddressAttribute>();
string email = "some@email.com";
bool isValid = emailChecker.IsValid(email);
//returns true
Run Code Online (Sandbox Code Playgroud)

如果您无法想象为什么我会想要这个,请考虑获取一个List并想要检查哪些是有效的电子邮件.

.net c# data-annotations

11
推荐指数
1
解决办法
5773
查看次数

自定义动态数据中的数据注释

我遇到了一个在动态数据Web应用程序中自定义DataAnnotations的场景.这是场景:

[显示(名称= "DispName")]

public string DName {get; set;}

我没有为Display DataAnnotation硬编码Name ="DispName",而是想从DataBase中获取一些值并使其适合于Name属性.喜欢:

[显示(名称= SomeValueFromDB)]

public string DName {get; set;}

有没有办法从数据库中显示Display DataAnnotation的Name属性而不是硬编码它的值?

提前致谢,

Sujith

asp.net asp.net-dynamic-data data-annotations

10
推荐指数
1
解决办法
2624
查看次数