标签: data-annotations

数据注释MVC 4位

我正在尝试实现一个接受 4 位数字或将其保留为空的字段。

[RegularExpression(@"^(\d{4})$", ErrorMessage = "Enter a valid 4 digit Year")]
[Display(Name = "Year")]
public int Year { get; set; }
Run Code Online (Sandbox Code Playgroud)

当输入超过 4 个数字时,会显示错误消息。问题是当我输入任何不是数字或数字和非数字混合的值时,验证错误消息不会显示。

我肯定错过了什么。在这里帮助我:)

c# regex asp.net-mvc data-annotations

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

实体框架中数据注释中的表名称不起作用。

我使用实体框架 6 在 MVC 5 中创建一个项目。我使用的是代码优先方法。我想在其中一个模型中为表定义一个与默认名称不同的名称。为此,我使用 System.ComponentModel.DataAnnotations 名称空间并定义该类,如下所示:

[Table(Name="Auditoria")]
public class AuditoriaDAL
{
    [Key]
    public int AuditoriaId { get; set; }

    ... 
}
Run Code Online (Sandbox Code Playgroud)

运行该项目,我得到一个数据库,其中有一个名为 AuditoriaDALs 的表。为什么表的名称不是我定义的名称?

asp.net-mvc data-annotations ef-code-first entity-framework-6

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

复杂密码的正则表达式

我将此正则表达式作为 C# .NET MVC 项目中密码字段的数据注释。

\n\n
[RegularExpression("(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[*+\\\\/|!\\"\xc2\xa3$%^&*()#[\\\\]@~\'?><,.=-_]).{6,}", ErrorMessage = "Password must be between 6 and 20 characters and contain one uppercase letter, one lowercase letter, one digit and one special character.")]\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想让以下密码无效:-

\n\n
    \n
  • 测试
  • \n
  • 测试1
  • \n
  • 测试G123
  • \n
\n\n

以下内容是有效的:-

\n\n
    \n
  • 测试1*
  • \n
  • T(&S)123*
  • \n
  • %F&y5HD$S
  • \n
\n\n

我想要至少 6 个字符,其中至少有 1 个大写字母、1 个小写字母、1 个数字和 1 个特殊字符。我希望上面的正则表达式能够做到这一点,但它让Testing12Tester12作为有效密码通过。

\n\n

我可以对上面的内容进行哪些更改以获得我所期望的结果?我假设上面需要一个大写字母,一个小写字母,一个数字和一个特殊字符,但显然我错了?

\n\n

提前致谢!

\n

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

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

Blazor WebAssembly 客户端数据注释本地化

Asp.net core 服务器端本地化有很好的文档记录并且对我有用。但是,如何在 Blazor WebAssembly 客户端上本地化 DTO 模型上的 DataAnnotations?

在服务器端,我添加了下面的代码,并且 DataAnnotations 已本地化。一切都按预期进行。

...
services
.AddRazorPages()              .AddViewLocalization(Microsoft.AspNetCore.Mvc.Razor.LanguageViewLocationExpanderFormat.Suffix)
                .AddDataAnnotationsLocalization(
                    options =>
                    {
                        options.DataAnnotationLocalizerProvider = (type, factory) =>
                        {
                            return factory.Create(typeof(CommonStrings));
                        };

                    });
...
Run Code Online (Sandbox Code Playgroud)

但是我如何在 Blazor 客户端(WebAssembly)上做同样的事情呢?例如,我有一个位于客户端的模型:

public class ApplicationUserDTO
    {
        public string Id { get; set; }

        [Required(ErrorMessage ="Field {0} is required")]
        [Display(Name ="First name")]
        public string FirstName { get; set; }

        [Required]
        [Display(Name = "Last name")]
        public string LastName { get; set; }

        [Required]
        [Display(Name = "Email")]
        public string Email { …
Run Code Online (Sandbox Code Playgroud)

client localization data-annotations webassembly blazor

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

asp.net core Razor Pages:希望 DisplayAttribute 描述显示为标题/工具提示

我有一个 asp.net core (.Net 5) Razor Pages 应用程序。在我的模型中,我有一个装饰如下的属性:

    [Display(Name = "Borrower Name", Prompt = "Borrower Name", Description = "Restrict the search results by borrower name.")]
    [StringLength(255)]
    public string BorrowerName { get; set; }
Run Code Online (Sandbox Code Playgroud)

我希望上面设置的“描述”属性呈现为输入的标题(也称为工具提示)。这是我渲染它的方式。它正确呈现,并且占位符已正确设置为提示(“借款人姓名”),但我的描述未呈现为“标题”属性。我缺少什么?

<label asp-for="BorrowerName" class="form-label"></label>
<input asp-for="BorrowerName" class="form-control" />
Run Code Online (Sandbox Code Playgroud)

这是渲染的内容:

<input class="form-control" type="text" data-val="true" data-val-length="The field Borrower Name must be a string with a maximum length of 255." data-val-length-max="255" id="BorrowerName" maxlength="255" name="BorrowerName" placeholder="Borrower Name" value="">
Run Code Online (Sandbox Code Playgroud)

文档(https://learn.microsoft.com/en-us/dotnet/api/system.componentmodel.dataannotations.displayattribute.description?view=net-5.0)说“Description属性通常用作工具提示或描述UI 元素”,但没有提供如何实现这一点的线索。

data-annotations asp.net-core razor-pages

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

ASP.NET MVC 2中的DataAnnotationsModelBinder问题

每个人都试过mvc官方网站上的DataAnnotations教程?它对我不起作用.
当我尝试提交已编辑的产品时,我有以下错误消息:
找不到方法:'System.Collections.Generic.IDictionary`2 System.Web.Mvc.ModelBindingContext.get_ValueProvider()'.
我正在使用ASP.NET MVC 2预览2.任何想法为什么会发生这种情况?我注册了他们需要的模型粘合剂.
可能有人遇到过一篇帖子或文章,指导如何让这个工作?

asp.net-mvc data-annotations asp.net-mvc-2

2
推荐指数
1
解决办法
1106
查看次数

DataAnnotations验证和自定义模型绑定器

我有一个接受以下模型的action方法 - LanguagesViewModel:

public class LanguagesViewModel : ViewModelBase
{
 IEnumerable<LanguageItem> Languages { get; set; }
}

public class LanguageItem
{
 [Required]
 public int LanguageId { get; set; }

 [Required]
 public int SpeakingSkillId { get; set; }

 [Required]
 public int WritingSkillId { get; set; }

 [Required]
 public int UnderstandingSkillId { get; set; } 
}
Run Code Online (Sandbox Code Playgroud)

我还有一个自定义模型绑定器将POST数据绑定到IEnumerable<LanguageItem>.

问题是我如何使DataAnnotations验证工作?

custom-model-binder data-annotations asp.net-mvc-2

2
推荐指数
1
解决办法
1484
查看次数

是否可以循环具有特定DataAnnotation和特定值的属性?.NET C#

假设我有一个自定义DataAnnotation属性的多个属性:

[Objective].
Run Code Online (Sandbox Code Playgroud)

我只想将记录放在我的viewmodel中,其值为'Y'并且用[Objective]的属性修饰

这种事可能吗?

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

2
推荐指数
1
解决办法
335
查看次数

使用POCO实体框架4时丢失DataAnnotations

我正在使用新的EntityFramework 4.1和POCO对象,以及DataAnnotation框架.

当EntityFramework需要创建代理类(例如,延迟加载虚拟属性)时,我的所有数据注释都将丢失.有没有办法让我的ModelMetaData可以来自代理的类,而不是代理类?

我知道我可以选择禁用代理创建(context.Configuration.ProxyCreationEnabled),但这似乎是一个糟糕的答案.我想,这应该是已经解决的问题.

这是一些示例代码:

public class Person
{
    [Required, Display(Name = "Display That Name")]
    public string DisplayName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后在视图中的模型元数据中,类型为:Person_9C92B92D56F6F4F0FB1686526D585438A05323CC72E457C2152796E8866297E1 (FullName = "System.Data.Entity.DynamicProxies.Person_9C92B92D56F6F4F0FB1686526D585438A05323CC72E457C2152796E8866297E1"}),我的元数据消失了,显示名称在"DisplayName"处呈现,而不是"显示该名称".

有什么建议?

poco entity-framework-4 data-annotations entity-framework-4.1 asp.net-mvc-3

2
推荐指数
1
解决办法
2582
查看次数

.net MVC3 DataAnnotation - 如何防止重复验证

我在使用数据注释进行验证时遇到问题,并且想知道是否有人做过类似的事情.

我们已将域权限放入域层,并且对于每个域实体,我们都有一个MetadataType类,其中包含注释形式的适用业务规则.域实体类还为未使用DataAnnotations实现的任何验证实现IValidatableObject.

在Web /表示层中,我们使用视图模型对象.这些可以是来自多个域实体或单个域实体的数据,现在让我们假设一个域实体.此模型视图使用[MetadataType(typeof(DomainEntityMetaData))]进行修饰

这使我们的业务逻辑保持在域中和视图模型之外.但是,视图模型不实现IValidatableObject,因此永远不会执行.我显然不想在视图中重复验证.

有关如何处理此问题的任何建议?

data-annotations asp.net-mvc-3

2
推荐指数
1
解决办法
407
查看次数