相关疑难解决方法(0)

单元测试ASP.NET DataAnnotations验证

我正在使用DataAnnotations进行模型验证,即

    [Required(ErrorMessage="Please enter a name")]
    public string Name { get; set; }
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,我正在检查ModelState的值.对于从我的视图发布的无效模型数据,这正确返回false.

但是,在执行我的控制器操作的单元测试时,ModelState始终返回true:

    [TestMethod]
    public void Submitting_Empty_Shipping_Details_Displays_Default_View_With_Error()
    {
        // Arrange
        CartController controller = new CartController(null, null);
        Cart cart = new Cart();
        cart.AddItem(new Product(), 1);

        // Act
        var result = controller.CheckOut(cart, new ShippingDetails() { Name = "" });

        // Assert
        Assert.IsTrue(string.IsNullOrEmpty(result.ViewName));
        Assert.IsFalse(result.ViewData.ModelState.IsValid);
    }
Run Code Online (Sandbox Code Playgroud)

在测试中我是否需要做额外的事情来设置模型验证?

谢谢,

asp.net asp.net-mvc data-annotations

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

Validator.TryValidateObject未验证RangeAttribute

鉴于以下对象,

public class Question
{
    [Required]
    public string QuestionText { get; set; }

    [Range(1, 5)]
    public int Difficulty { get; set; }        
}
Run Code Online (Sandbox Code Playgroud)

使用以下验证码

ICollection<ValidationResult> results = new List<ValidationResult>();
Question question = new Question();
ValidationContext ctx = new ValidationContext(question, null, null);
Validator.TryValidateObject(question, ctx, results);
// results.Length = 1
Run Code Online (Sandbox Code Playgroud)

为什么Range属性在Required(值显然为0)时不会创建验证错误?

asp.net-mvc data-annotations

41
推荐指数
2
解决办法
7403
查看次数

如何告知Data Annotations验证器还验证复杂的子属性?

验证父对象时是否可以自动验证复杂的子对象,并将结果包含在已填充的对象中ICollection<ValidationResult>

如果我运行以下代码:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace ConsoleApplication1
{
    public class Person
    {
        [Required]
        public string Name { get; set; }

        public Address Address { get; set; }
    }

    public class Address
    {
        [Required]
        public string Street { get; set; }

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

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

    class Program
    {
        static void Main(string[] args)
        {
            Person person = new Person
            {
                Name = null,
                Address …
Run Code Online (Sandbox Code Playgroud)

c# validation data-annotations

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

标签 统计

data-annotations ×3

asp.net-mvc ×2

asp.net ×1

c# ×1

validation ×1