gpt4 book ai didi

c# - ModelState.IsValid 不验证模型

转载 作者:行者123 更新时间:2023-11-30 18:53:55 25 4
gpt4 key购买 nike

我的模型类如下:

public class PostInputViewModel
{
[Required]
[MinLength(1)]
[MaxLength(125)]
public string Title { get; set; }

[Required]
[AllowHtml]
[Display(Name="Content")]
public string Content { get; set; }
}

Controller 如下:

[HttpPost]
public ActionResult Write(PostInputViewModel input)
{
if (!ModelState.IsValid)
return View(input);

var post = new Post
{
Title = input.Title,
Content = input.Content,
DateCreated = DateTime.Now,
DateModified = DateTime.MaxValue,
};

dbContext.Posts.Add(post);
dbContext.SaveChanges();

return RedirectToAction("Index", "Home");
}

当我通过单击 F5 运行 Web 应用程序时,如果我不输入标题和内容值,ModelState.IsValid 为 false,但是如果我使用单元测试用例测试 Controller 类,ModelState.IsValid 始终为 true。测试用例如下:

[TestMethod]
public void write_should_validate_model()
{
var input = new PostInputViewModel();
input.Title = null;
input.Content = null;
var actionResult = controller.Write(input) as ViewResult;

Assert.IsFalse(actionResult.ViewData.ModelState.IsValid);
}

我错过了什么吗?提前致谢。

最佳答案

如果你想让你的 Controller 尝试验证模型,你可以在断言之前调用 TryValidateModel 方法:

controller.TryValidateModel(input);

但我同意您实际上只是在测试验证属性。不过可能没问题;它将验证您的模型是否应用了预期的属性。

关于c# - ModelState.IsValid 不验证模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8936059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com