标签: data-annotations

MVC3如何动态添加验证错误

我试图在视图上显示错误消息.能否建议我采取正确的方法来做到这一点.我正在考虑动态添加数据注释,但找不到任何解决方案.

谢谢

[HttpPost]
public ActionResult AddBook(BooksModel booksModel)
{           
    try
    {
        booksModel.Account = _bookRepository.BookDetails(booksModel.Title,booksModel.RefCode, booksModel.DontHaveRefCode);
    }
    catch (FaultException faultException)
    {
        switch (faultException.Code.Name)
        {
            case "exc1":
            // Show Error Message Here
            return View("AddBook", booksModel);
            default:
            break;
        }
    }
    return View("ConfirmBook", booksModel);
}
Run Code Online (Sandbox Code Playgroud)

data-annotations razor asp.net-mvc-3

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

MVC注释验证删除data-val属性

我有模特财产:

public int? RegionId { get; set; }
Run Code Online (Sandbox Code Playgroud)

我在视图中创建下拉列表:

@Html.DropDownListFor(m => m.RegionId, Model.Regions)
Run Code Online (Sandbox Code Playgroud)

在html中:

<select data-val="true" data-val-number="The field RegionId must be a number." 
</select>
Run Code Online (Sandbox Code Playgroud)

我需要删除属性data-val-number,因为在特定情况下它不适合我.

我在Application_Start中尝试:

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
Run Code Online (Sandbox Code Playgroud)

另请注意,RegionId可以为空.

如何在服务器端代码中删除此属性?(不是javascript)

validation asp.net-mvc data-annotations asp.net-mvc-3

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

数据注释RegularExpressionAttribute为空/ null

我正在使用RegularExpressionAttribute验证属性.该物业需要允许anything but zero length string, null, or (just) spaces.我正在使用的正则表达式是"^(?!^ *$)^.+$".

如果值为nullan empty string,则RegularExpressionAttribute.IsValid始终返回true但我认为它应该为false(只有空格才能正常工作).

我不是正则表达式专家,但我相信表达式是正确的(如果我使用Regex.IsMatch空字符串直接从我的代码验证正则表达式返回false - 如预期的那样).这是RegularExpressionAttribute的问题吗?

(我知道在这种情况下,RequiredAttribute通常是一个快速但不是一个选项)

更新:

为了消除任何歧义,这里有一小段测试代码来演示:

    public class MyValueTester
    {
//      internal const string _REGEX_PATTERN = "^(?!\\s*$).+$";
//      internal const string _REGEX_PATTERN = @"^(?!\s*$)";
        internal const string _REGEX_PATTERN = @"[^ ]";



        public MyValueTester()
        {
            ProperValue = "hello";
            NullValue = null;
            SpaceValue = " ";
            LeadingSpaceValue = " hi";
            EmptyValue = "";
        }

        [RegularExpression(_REGEX_PATTERN, …
Run Code Online (Sandbox Code Playgroud)

c# regex model-view-controller asp.net-mvc data-annotations

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

什么是好友类,我如何使用它来为现有类添加注释?

我已经看到术语"好友类"用作"如何在另一个文件中为部分类添加注释"之类的问题的"答案",但这些答案假设我知道Buddy类什么,并且代码示例假设我理解这是如何工作的原因.

我无法看到C#中的伙伴类是什么的简单解释,以及它如何/为什么允许我修改现有类,例如向属性添加注释.

.net c# buddy-class data-annotations

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

对于数据验证,在哪里添加 Html.RenderPartialAsync("_ValidationScriptsPartial")?

在我的ASP.NET Core 1.1.1应用程序中,模型验证不起作用。我注意到一些默认值views(例如login.cshtmlRegister.cshtml在创建VS2017应用程序时创建的)在末尾具有以下代码。但这些默认视图实际上是局部视图。我的视图不是局部视图,是否也应将以下内容添加到我的末尾views?或者我应该在不是部分视图的视图末尾添加什么:

@section Scripts {
    @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); }
}
Run Code Online (Sandbox Code Playgroud)

validation data-annotations razor asp.net-core-mvc

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

在 Entity Framework Core 中使用 Fluent API 编写范围数据注释

描述

当我尝试采用Clean Architecture 时,我想摆脱数据注释并使用Fluent API,就我个人而言,我开始更喜欢它。

但是,我不太擅长这种实现方式。

范围注释(旧方法)

我之前所做的是使用Range注释为数字属性指定最小值最大值,如下所示:

public class Engine
{
    ...

    [Range(0, 10000)]
    public int Size { get; set; }

    [Display(Name = "Horse power")]
    [Range(0, 1000)]
    public int HorsePower { get; set; }

    [Display(Name = "Top speed")]
    [Range(0, 500)]
    public int? TopSpeed { get; set; }

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

配置类(更清洁的方法)

现在,我正在尝试在与实体关联的Configuration类中编写验证代码Engine

实体类:

public class Engine
{
    public int EngineId { get; …
Run Code Online (Sandbox Code Playgroud)

c# data-annotations entity-framework-core asp.net-core clean-architecture

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

ASP.NET 中字段的允许值

ASP.NET MVC Core 中的允许值是否有任何数据注释?由于 SQL 服务器中没有枚举,因此我无法将包含枚举字段的类迁移到数据库。我想为班级中的字段提供可能/允许的值。有没有办法做到这一点?

    public class Employee
    {
        [Key]
        public int ID { get; set; }

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

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

    }
Run Code Online (Sandbox Code Playgroud)

我想提供ActiveInactive作为 Status 字段的唯一可能值。

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

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

如何使用 DataAnnotation 属性在控制台应用程序中验证模型

我正在尝试在 ASP.net MVC 应用程序之外使用 DataAnnotation 属性验证。理想情况下,我想在我的控制台应用程序中采用任何模型类并将其装饰如下:

private class MyExample
{
    [Required]
    public string RequiredFieldTest { get; set; }

    [StringLength(100)]
    public int StringLengthFieldTest { get; set; }

    [Range(1, 100)]
    public int RangeFieldTest { get; set; }

    [DataType(DataType.Text)]
    public object DataTypeFieldTest { get; set; }

    [MaxLength(10)]
    public string MaxLengthFieldTest { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后(伪)做这样的事情:

var item = new MyExample(); // not setting any properties, should fail validation
var isValid = item.Validate();
Run Code Online (Sandbox Code Playgroud)

我在网上的一个示例中找到了这段代码:

var item = new MyExample(); // not setting any …
Run Code Online (Sandbox Code Playgroud)

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

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

MvcOptions.SuppressImplicitRequiredAttributeForNonNullableReferenceTypes 到底改变了什么?

据我了解,值类型隐式具有[Required]属性 whenMvcOptions.SuppressImplicitRequiredAttributeForNonNullableReferenceTypes设置为false。但坦率地说,当我在两者之间切换时,我看不出有什么区别。

此外,如果我[Required]在不可空类型(例如 an )上显式使用该属性int,则需要设置其值,而不是仅在没有给定int参数的情况下命中端点,该参数将为其类型分配默认值- 0.

所以,总结一下:

  1. 如果它隐式添加[Required]属性,为什么显式变体提供完全不同的功能?

  2. 启用/禁用有任何功能差异吗MvcOptions.SuppressImplicitRequiredAttributeForNonNullableReferenceTypes?据我所知,它没有改变任何东西。

c# model-view-controller model-validation data-annotations asp.net-core

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

避免在int字段MVC3上进行验证

我有以下ViewModel(只显示一些易于阅读的属性)

public class Contract{

public string Name {get; set;}

public ContractTerm PrpTerm { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

PRP Term模型就是这样的

public class PrpTerm{

public int Id {get; set;}
public string Name {get; set;}

}
Run Code Online (Sandbox Code Playgroud)

对于我的模型验证,我正在使用XML文件来注入注释.我已经Name根据需要设置了属性,我ContractTerm没有指定任何验证(它是列表中的可选字段).我的观点是名称的文本框和合同条款的选择列表.

当我试图保存时,我将该ModelState.IsValid属性视为false,表示该PRPTerm.Id值是必需的.据我所知,因为我们无法为int赋值空值.

有人知道一种方法可以避免这种情况得到验证吗?

我尝试过使用Bind(Exclude annotation,但这会从数据提交中删除该字段,这不允许我获取用户选择的值(如果发生这种情况).我无法在PrpClass上将id设置为可为空另一个选项是在ViewModel上设置PrpTerm Id,但我需要用有效的理由来证明这种改变.

任何的想法?

validation data-annotations asp.net-mvc-3

0
推荐指数
1
解决办法
3635
查看次数