从单元测试调用时,ASP.NET MVC不会添加ModelError

时间:2010-04-06 02:55:39

标签: asp.net-mvc validation data-annotations model-binding

我有一个模型项目

public class EntryInputModel
{
    ...

    [Required(ErrorMessage = "Description is required.", AllowEmptyStrings = false)]
    public virtual string Description { get; set; }
}

和控制器操作

public ActionResult Add([Bind(Exclude = "Id")] EntryInputModel newEntry)
{
    if (ModelState.IsValid)
    {
        var entry = Mapper.Map<EntryInputModel, Entry>(newEntry);

        repository.Add(entry);
        unitOfWork.SaveChanges();
        return RedirectToAction("Details", new { id = entry.Id });
    }
    return RedirectToAction("Create");
}

当我在单元测试中创建EntryInputModel时,将Description属性设置为null并将其传递给操作方法,我仍然会获得ModelState.IsValid == true,即使我已经调试并验证了newEntry.Description == null

为什么这不起作用?

1 个答案:

答案 0 :(得分:0)

这是因为从测试中调用操作时不会发生模型绑定。模型绑定是将发布的表单值映射到类型并将其作为参数传递给操作方法的过程。