我正在尝试实现一个接受 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 个数字时,会显示错误消息。问题是当我输入任何不是数字或数字和非数字混合的值时,验证错误消息不会显示。
我肯定错过了什么。在这里帮助我:)
我使用实体框架 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
我将此正则表达式作为 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.")]\nRun Code Online (Sandbox Code Playgroud)\n\n我想让以下密码无效:-
\n\n以下内容是有效的:-
\n\n我想要至少 6 个字符,其中至少有 1 个大写字母、1 个小写字母、1 个数字和 1 个特殊字符。我希望上面的正则表达式能够做到这一点,但它让Testing12和Tester12作为有效密码通过。
\n\n我可以对上面的内容进行哪些更改以获得我所期望的结果?我假设上面需要一个大写字母,一个小写字母,一个数字和一个特殊字符,但显然我错了?
\n\n提前致谢!
\nAsp.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) 我有一个 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 元素”,但没有提供如何实现这一点的线索。
每个人都试过mvc官方网站上的DataAnnotations教程?它对我不起作用.
当我尝试提交已编辑的产品时,我有以下错误消息:
找不到方法:'System.Collections.Generic.IDictionary`2 System.Web.Mvc.ModelBindingContext.get_ValueProvider()'.
我正在使用ASP.NET MVC 2预览2.任何想法为什么会发生这种情况?我注册了他们需要的模型粘合剂.
可能有人遇到过一篇帖子或文章,指导如何让这个工作?
我有一个接受以下模型的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验证工作?
假设我有一个自定义DataAnnotation属性的多个属性:
[Objective].
Run Code Online (Sandbox Code Playgroud)
我只想将记录放在我的viewmodel中,其值为'Y'并且用[Objective]的属性修饰
这种事可能吗?
我正在使用新的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
我在使用数据注释进行验证时遇到问题,并且想知道是否有人做过类似的事情.
我们已将域权限放入域层,并且对于每个域实体,我们都有一个MetadataType类,其中包含注释形式的适用业务规则.域实体类还为未使用DataAnnotations实现的任何验证实现IValidatableObject.
在Web /表示层中,我们使用视图模型对象.这些可以是来自多个域实体或单个域实体的数据,现在让我们假设一个域实体.此模型视图使用[MetadataType(typeof(DomainEntityMetaData))]进行修饰
这使我们的业务逻辑保持在域中和视图模型之外.但是,视图模型不实现IValidatableObject,因此永远不会执行.我显然不想在视图中重复验证.
有关如何处理此问题的任何建议?
data-annotations ×10
asp.net-mvc ×5
c# ×3
.net ×2
regex ×2
asp.net-core ×1
blazor ×1
client ×1
localization ×1
poco ×1
razor-pages ×1
webassembly ×1