我有一个模型项目
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
。
为什么这不起作用?
答案 0 :(得分:0)
这是因为从测试中调用操作时不会发生模型绑定。模型绑定是将发布的表单值映射到类型并将其作为参数传递给操作方法的过程。