Tag: data annotations

ASP.NET Web API:如果从资源设置错误消息,则模型有效

问题是在ApiController中,如果我使用.rsx文件(参考资料)提供自定义错误消息,则ModelState.IsValid始终为true 。 这是我的模型: public class LoginModel { public string Email { get; set; } [Required] [MinLength(5)] public string Password { get; set; } } ApiController中的方法: [HttpPost] [ModelValidationFilter] public void Post(LoginModel model) { var a = ModelState.IsValid; } filter: public class ModelValidationFilterAttribute : ActionFilterAttribute { public override void OnActionExecuting(HttpActionContext actionContext) { if (actionContext.ModelState.IsValid == false) { […]

如何格式化Html.TextBoxFor中的DateTimeOffset?

我有一个基于Bootstrap 3和ASP.NET MVC 5的视图,用于编辑用户配置文件信息,但它在表单上以不正确的格式显示。 数据库是Neo4j,我正在使用Neo4jClient与.NET中的数据库进行交互。 Neo4jClient需要使用DateTimeOffset对象而不是DateTime对象来使用Json.NET的序列化程序传递给Neo4j的REST接口。 因此,我的模型使用DateTimeOffset对象来存储用户的生日。 这是我视图中的表单字段: Birthday @Html.TextBoxFor(model => model.Birthday, new { @class = “form-control input-md datepicker”, placeholder = “Birthday” }) Please enter your birthday 打印到表单时,日期格式如下: M/dd/yyyy hh:mm:ss t -zzz 但是,它应该有这种格式,因为我们只需要日期部分: MM/dd/yyyy 我已经尝试在model属性上使用DataFormatString注释,但它仍然没有以正确的格式显示: [DisplayFormat(DataFormatString = “{0:MM/dd/yyyy}”, ApplyFormatInEditMode = true)] public DateTimeOffset Birthday { get; set; } 此注释是否仍适用于DateTimeOffset对象? 如何修复字符串格式?

在单独的类库中本地化数据注释

我们正在尝试为我们的域模型实现本地化,这些域模型存在于我们解决方案中的单独的类库项目中。 但是,我们无法使其工作,因为我们的模型数据注释属性根本没有被翻译。 项目结构 解 网络项目 资源文件夹(包含.resx文件。 例如App.en.resx )工作正常 类库 领域模型 资源文件夹(包含.resx文件。 例如App.en.resx )不起作用 Startup.cs services.AddMvc() .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix) .AddDataAnnotationsLocalization(); 注意 本地化在Web项目中工作,例如它转换视图,控制器。 但是,当我们尝试翻译存在于单独项目中的模型时,它不起作用。 // 问候

以编程方式添加数据注释

我正在使用.NET 4的asp mvc3应用程序。 但是,我想要使用的模型是在使用.NET 3.5的类库中,并且无法更改。 我可以以编程方式将.NET 4 数据注释添加到我的模型中的某些属性中,以便进行一些简单的validation吗?

CustomValidation属性似乎不起作用

我在Silverlight 4应用程序中有一个简单的测试页面,我正在尝试获取自定义validation规则。 我有一个TextBox和一个Button,我在TextBlock中显示validation结果。 我的视图模型有一个Name属性,它绑定了TextBox的Text属性。 我在Name属性上有两个validation属性, [Required]和[CustomValidation] 。 当我点击提交按钮时,必需的validation器正确触发,但我的自定义validation器的validation方法内的断点永远不会被命中。 我不明白为什么会这样,因为我认为我非常仔细地遵循了MS的例子: http : //msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.customvalidationattribute(v = vs.95)的.aspx 以下是视图模型的代码: using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using GalaSoft.MvvmLight.Command; namespace MyProject { // custom validation class public class StartsCapitalValidator { public static ValidationResult IsValid(string value) { // this code never gets hit if (value.Length > 0) { var valid […]

CS1061:不包含定义

为什么我会收到此错误? 当然,我的第一个模型上不存在SelectIssuePriority。 我添加了它。 Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. Compiler Error Message: CS1061: ‘Devcore’ does not contain a definition for ‘SelectIssuePriority’ and no extension method ‘SelectIssuePriority’ accepting a first argument of type ‘Devcore.’ […]

ASPNET MVC – 使用具有相同签名的新助手覆盖Html.TextBoxFor(model.property)?

我想用我自己的帮助器覆盖Html.TextBoxFor(),该帮助器具有完全相同的签名(当然是一个不同的命名空间) – 这是可能的,如果是这样,怎么样? 这样做的原因是我在现有应用程序中有100多个视图,我想改变TextBoxFor的行为,以便在属性具有[StringLength(n)]注释时输出maxLength = n属性。 自动输出maxlength = n的代码在这个问题中: 来自Asp.Net MVC中DataAnnotations StringLength的文本框的maxlength属性 。 但我的问题并不重复 – 我正在尝试创建一个更通用的解决方案:DataAnnotaion自动流入html,而不需要编写视图的人员需要额外的代码。 在引用的问题中,您必须将每个Html.TexBoxFor更改为Html.CustomTextBoxFor。 我需要这样做,以便不需要更改现有的TextBoxFor() – 因此创建一个具有相同签名的帮助程序:更改辅助方法的行为,并且所有现有实例都可以正常工作而不做任何更改(100 + views,至少500 TextBoxFor()s – 不想手动编辑它)。 我尝试了这段代码:(我需要为TextBoxFor的每次重载重复它,但一旦根问题解决了,那将是微不足道的) namespace My.Helpers { public static class CustomTextBoxHelper { public static MvcHtmlString TextBoxFor(this HtmlHelper htmlHelper, Expression<Func> expression, object htmlAttributes, bool includeLengthIfAnnotated) { // implementation here } } } 但是我在Html.TextBoxFor()视图中遇到编译器错误:“调用在以下方法或属性之间是不明确的”(当然)。 有没有办法做到这一点? […]

如何使用.NET Framework 3.5中的数据注释对C#类进行属性validation?

.NET Framework中是否有一种方法可以将一些对象实例与一个对象实例交给一个方法或validation器,该对象实例的类用Data Annotations修饰,并接收一组错误? 我看到有一种方法可以在.NET 4.x中执行此操作 。 但.NET 3.5中是否有类似的机制?

从生成db scema中禁用System.CompositionModel.DataAnnotation而不是仅用于不引人注意的jqueryvalidation

我想使用System.CompositionModel.DataAnnotation来构建Model,但它不应该影响数据库模式,例如,如果我使用Required那么它不应该使该列在数据库中不可为空。 我想使用Data注释的原因是用于MVC 4 JQuery Unobstrusivevalidation。 截至目前,我已通过使用validation @Html.TextBoxFor(model => model.BookingRequest.Email, new { data_val = “true”, data_val_required = “Please provide Special Notes” }) 我认为这不是执行validation的最佳实践或标准方法。 我想把我的模型改成这样的东西。 [Required] public string Email { get; set; } public string CustomerName { get; set; } public string ContactNumber { get; set; } 所以我不需要在TextAreaFor中生成html元素时传递html属性,但在数据库中它应该是可空的。 我这样做的原因是有另一个服务使用相同的上下文但它不提供电子邮件值。 而且我不想改变已经运行的服务。 我使用EntityTypeConfigurtaion(Fluent API)而不是DataAnnotation来配置模型。 在此先感谢您抽出时间来审核我的问题。

如何在MVC视图中循环访问DataAnnotation的DisplayName?

我想访问DataAnnotation的DisplayName和模型类的类似GroupName ,然后在MVC视图中循环。 例如,让我说我的一个模型属性是这样的 public class Person { [Display(Name=”Home Phone”,GroupName=”Home”)] public string HomePhone { get; set; } [Display(Name = “Home Address”, GroupName = “Home”)] public string HomeAddress { get; set; } [Display(Name = “Office Phone”, GroupName = “Office”)] public string OfficePhone { get; set; } [Display(Name = “Office Address”, GroupName = “Office”)] public string OfficeAddress { […]