我试图了解是否可以在 EntityFramework 中以某种方式使用 AssociationAttribute。MSDN 文档薄弱。
我在这里找到了一个不确定的答案:
如何使用 System.ComponentModel.DataAnnotations.AssociationAttribute
如果可以的话,请给我一些使用示例。
我有基于 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) 我有一个 .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) 我的 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__DisplayClass361.<>c__DisplayClass38.<Then>b__35()\r\n at …
有没有办法做这个问题正在做的事情(或者或需要验证),但不是将它应用于整个类,我只想在类中的两个特定字段上应用验证。
例如
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 限制为非此即彼的要求。它们不能都为空。有没有办法做到这一点?
是否有正则表达式可以使用普通用户名或电子邮件地址作为用户名?我希望用户能够输入自己的用户名,或者仅使用他们的电子邮件地址作为用户名,但我无法找到有关如何正确实现此目的的任何可靠信息。它还必须通过验证,例如:如果用户选择创建自己的用户名,则必须遵守我的用户名策略,该策略限制它们以字母或数字开头,并且不能包含特殊字符,或者,如果他们输入电子邮件,则必须遵守电子邮件规则(典型的电子邮件规则)。有人对此有什么建议吗?
我正在尝试创建自定义验证属性。
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)
我从网站上复制了它,理论上这应该可行。但我无法让它发挥作用。
我正在使用 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)
但单元格内容保持不变。
我EditContext从CascadingParameter
[CascadingParameter]
public EditContext EditContext { get; set; }
Run Code Online (Sandbox Code Playgroud)
我认识一个真实存在的.Validate方法,即验证了整个Model的EditForm。
但我只想验证Model.
谁能只验证Modelfrom 的一个字段EditForm?
如果你想知道为什么我想要这个......是因为我正在制作一个自定义组件,当值发生变化并且它是一个有效值时,它会做一些事情。
c# data-annotations blazor blazor-server-side blazor-client-side
我正在使用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) data-annotations ×10
c# ×6
asp.net-mvc ×3
asp.net ×2
blazor ×1
epplus ×1
excelpackage ×1
regex ×1
validation ×1