标签: data-annotations

DataAnnotations 中 AssociationAttribute 的用途是什么?

我试图了解是否可以在 EntityFramework 中以某种方式使用 AssociationAttribute。MSDN 文档薄弱。

我在这里找到了一个不确定的答案:

如何使用 System.ComponentModel.DataAnnotations.AssociationAttribute

如果可以的话,请给我一些使用示例。

c# asp.net entity-framework data-annotations

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

即使属性已设置且有效,为什么 TryUpdateModel 仍返回 false?

我有基于 ASP.Net MVC3 的 Web 应用程序。我需要一个“创建”视图,在用户从下拉列表中选择要创建的子类型之前,该视图不会知道模型类型。为了尝试解决此问题,我在 Shared/EditorTemplates 下为每个派生模型类型创建了一个编辑器模板。这允许我创建一个对视图模型强类型的“Create.cs”。视图模型只有两个成员,一个枚举和一个复杂类型。这个想法是,视图最初仅显示一个下拉列表(枚举成员的编辑器),然后当用户最初提交指定的“模型类型”(下拉选择的值)时,POST 操作可以检查“模型类型” " 为视图模型的单个复杂成员指定并实例化正确的派生模型类型,该成员的类型是所有可能的“模型类型”的基本类型。

抽象+派生类型模型对象...

public abstract class MyModelBase
{
    public MyModelType_e ModelType {get; set; }
    [Required]
    public string Name { get; set; }
}

public class DerivedType1 : MyModelBase
{ ... }

public class DerivedType2 : MyModelBase
{ ... }

public class DerivedType3 : MyModelBase
{ ... }
Run Code Online (Sandbox Code Playgroud)

我有一个复杂的视图模型如下......

public enum MyModelType_e
{
    DerivedType1 = 0,
    DerivedType2 = 1,
    DerivedType3 = 2
}

public class MyModelCreate
{
    public MyModelType_e ModelTypeForSelectList { get; …
Run Code Online (Sandbox Code Playgroud)

c# asp.net entity-framework data-annotations asp.net-mvc-3

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

MVC4 - 如何验证下拉列表?

我有一个 .Net MVC4 模型/视图,其中包含许多[必需]字段,其中一个字段是通过下拉列表“Content_CreatedBy”[下面的第一个代码块]选择的。

客户端验证会在除 DDL 之外的所有字段上触发 [尽管服务器端验证不允许在 DDL 中输入任何内容]。我尝试验证 DDL 文本及其数值,但客户端没有触发。

谁能看到我做错了什么吗?

感谢
模特

[Required]
[Display(Name = "Author")]
[ForeignKey("ContentContrib")]
[Range(1, 99, ErrorMessage = "Author field is required.")]
public virtual int Content_CreatedBy { get; set; }

[Required]
[Display(Name = "Date")]
public virtual DateTime Content_CreatedDate { get; set; }

[Required]
[DataType(DataType.MultilineText)]
[Display(Name = "Source / Notes ")]
[StringLength(10, MinimumLength = 3)]
public virtual string Content_Sources { get; set; }

[Required]
[Display(Name = "Keywords")]
[StringLength(50, MinimumLength = 3)]
public virtual string Content_KeyWords …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc data-annotations

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

MaxLength + Asp.net Web API - 错误

我的 PriceDM 类中有这个属性。

 [MaxLength(8)]
        public decimal Price { get; set; }


   public void AddPrice([FromBody]PriceDM vm)
        {
}
Run Code Online (Sandbox Code Playgroud)

虽然我一直收到这个错误

{"Message":"发生错误。","ExceptionMessage":"无法将'System.Decimal'类型的对象转换为'System.Array'类型。","ExceptionType":"System.InvalidCastException"," StackTrace":" 在 System.ComponentModel.DataAnnotations.MaxLengthAttribute.IsValid(Object value)\r\n 在 System.ComponentModel.DataAnnotations.ValidationAttribute.IsValid(Object value, ValidationContext validationContext)\r\n 在 System.ComponentModel.DataAnnotations。 ValidationAttribute.GetValidationResult(Object value, ValidationContext validationContext)\r\n 在 System.Web.Http.Validation.Validators.DataAnnotationsModelValidator.Validate(ModelMetadata metadata, Object container)\r\n 在 System.Web.Http.Validation.DefaultBodyModelValidator。ShallowValidate(ModelMetadata 元数据、ValidationContext validationContext、对象容器)\r\n
在 System.Web.Http.Validation.DefaultBodyModelValidator.ValidateNodeAndChildren(ModelMetadata metadata, ValidationContext validationContext, Object container)\r\n
在 System.Web.Http.Validation.DefaultBodyModelValidator.ValidateProperties(ModelMetadata metadata, ValidationContext validationContext)\r\n 在System.Web.Http.Validation.DefaultBodyModelValidator.ValidateNodeAndChildren(ModelMetadata metadata, ValidationContext validationContext, Object container)\r\n
at System.Web.Http.Validation.DefaultBodyModelValidator.Validate(Object model, Type type, ModelMetadataProvider metadataProvider, HttpActionContext actionContext,串keyPrefix个)\ r \ n在System.Web.Http.ModelBinding.FormatterParameterBinding。<> C_ DisplayClass1.b_0(对象模型)\r\n 在 System.Threading.Tasks.TaskHelpersExtensions.<>c__DisplayClass36 1.<>c__DisplayClass38.<Then>b__35()\r\n at …

c# data-annotations asp.net-web-api

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

EF - 需要两个字段之一?

有没有办法做这个问题正在做的事情(或者或需要验证),但不是将它应用于整个类,我只想在类中的两个特定字段上应用验证。

例如

public class FooModel {

    [Required]
    public string Name { get; set; }

    [Required]
    public decimal Cost { get; set; }

    public int Bar1 { get; set; }

    public float Bar2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我只想将 Bar1 和 Bar2 限制为非此即彼的要求。它们不能都为空。有没有办法做到这一点?

entity-framework data-annotations

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

使用电子邮件地址作为用户名的正则表达式?

是否有正则表达式可以使用普通用户名或电子邮件地址作为用户名?我希望用户能够输入自己的用户名,或者仅使用他们的电子邮件地址作为用户名,但我无法找到有关如何正确实现此目的的任何可靠信息。它还必须通过验证,例如:如果用户选择创建自己的用户名,则必须遵守我的用户名策略,该策略限制它们以字母或数字开头,并且不能包含特殊字符,或者,如果他们输入电子邮件,则必须遵守电子邮件规则(典型的电子邮件规则)。有人对此有什么建议吗?

regex validation asp.net-mvc data-annotations

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

如何创建自定义验证属性?

我正在尝试创建自定义验证属性。

public class PhoneValidator : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        return new RegularExpressionAttribute(@"^[+0]\d+").IsValid(Convert.ToString(value).Trim());
    }
}
Run Code Online (Sandbox Code Playgroud)

我用这个来使用

[PhoneValidator]
public string PhoneNumber { get; private set; }
Run Code Online (Sandbox Code Playgroud)

我从网站上复制了它,理论上这应该可行。但我无法让它发挥作用。

c# data-annotations

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

使用数据注释设置由 LoadFromCollection (epplus) 生成的单元格的格式

我正在使用 eeplus 创建一个 Excel 电子表格,如下所示

using (var pck = new ExcelPackage())
{
  var ws = pck.Workbook.Worksheets.Add("Customers");
  ws.Cells["A1"].LoadFromCollection(customers, PrintHeaders: true);

  var ms = new System.IO.MemoryStream();
  pck.SaveAs(ms);

  ms.WriteTo(Response.OutputStream);
}
Run Code Online (Sandbox Code Playgroud)

客户类别具有如下属性

[DisplayName("Customer creation date")]
public DateTime Created { get; set; }
Run Code Online (Sandbox Code Playgroud)

DisplayName似乎很荣幸,因此最上面的行将显示Customer creation date,但单元格内容显示为43257,41667.

我真正想要的是具有格式的单元格2018-04-05

我可以做数据注释吗?我都尝试过

[DisplayName("Customer creation date")]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}")]
public DateTime Created { get; set; }
Run Code Online (Sandbox Code Playgroud)

[DisplayName("Customer creation date")]
[DataType(DataType.Date)]
public DateTime Created { get; set; }
Run Code Online (Sandbox Code Playgroud)

但单元格内容保持不变。

data-annotations excelpackage epplus

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

如何验证 Blazor EditForm 中的单个字段?

EditContextCascadingParameter

[CascadingParameter]
public EditContext EditContext { get; set; }
Run Code Online (Sandbox Code Playgroud)

我认识一个真实存在的.Validate方法,即验证了整个ModelEditForm

但我只想验证Model.

谁能只验证Modelfrom 的一个字段EditForm

如果你想知道为什么我想要这个......是因为我正在制作一个自定义组件,当值发生变化并且它是一个有效值时,它会做一些事情。

c# data-annotations blazor blazor-server-side blazor-client-side

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

拆分实体数据模型属性的数据注释[必需]属性

我正在使用Entity Framework 的Table Splitting功能来拆分我的实体数据模型,如下所示:

+--------+    +--------------+
|  News  |    |  NewsImages  |
+--------+    +--------------+
| NewsID |    | NewsID       |
| Text   |    | Image        |
+--------+    +--------------+
Run Code Online (Sandbox Code Playgroud)

每个News实体都包含一个名为NewsImage引用相应图像的导航属性.


我正在使用DataAnnotations来验证我的模型.我把[Required]属性上Text的财产News类:

[MetadataType(typeof(NewsValidation))]
public partial class News
{
    /* ... */
}

public class NewsValidation
{
    [Required]
    public string Text { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是我用来获取图像数据的服务器端代码:

[HttpPost]
public ActionResult Create(News news)
{
    if (ModelState.IsValid)
    {
        UpdateNewsImage(news);
        _newsRepository.Add(news);
        _newsRepository.SaveChanges(); …
Run Code Online (Sandbox Code Playgroud)

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

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