相关疑难解决方法(0)

在ASP.NET Web API中处理ModelState验证

我想知道如何使用ASP.NET Web API实现模型验证.我的模型是这样的:

public class Enquiry
{
    [Key]
    public int EnquiryId { get; set; }
    [Required]
    public DateTime EnquiryDate { get; set; }
    [Required]
    public string CustomerAccountNumber { get; set; }
    [Required]
    public string ContactName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后我在我的API控制器中有一个Post动作:

public void Post(Enquiry enquiry)
{
    enquiry.EnquiryDate = DateTime.Now;
    context.DaybookEnquiries.Add(enquiry);
    context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

如何添加if(ModelState.IsValid)然后处理错误消息以传递给用户?

c# asp.net-web-api

100
推荐指数
6
解决办法
10万
查看次数

ModelState.IsValid即使它不应该是?

我有API需要验证我的用户模型.我选择一种方法,为创建/编辑操作创建不同的类,以避免质量分配和划分验证和实际模型分开.

我不知道为什么,但ModelState.IsValid即使它不应该返回真实.难道我做错了什么?

调节器

public HttpResponseMessage Post(UserCreate user)
{
    if (ModelState.IsValid) // It's valid even when user = null
    {
        var newUser = new User
        {
            Username = user.Username,
            Password = user.Password,
            Name = user.Name
        };
        _db.Users.Add(newUser);
        _db.SaveChanges();
        return Request.CreateResponse(HttpStatusCode.Created, new { newUser.Id, newUser.Username, newUser.Name });
    }
    return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
Run Code Online (Sandbox Code Playgroud)

模型

public class UserCreate
{
    [Required]
    public string Username { get; set; }
    [Required]
    public string Password { get; set; }
    [Required]
    public string Name { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-web-api

64
推荐指数
4
解决办法
5万
查看次数

测试ModelState在asp.net mvc中始终有效

在测试我的控制器的动作时,ModelState始终有效.

public class Product
{
    public int Id { get; set; }

    [Required]
    [StringLength(10)]
    public string Name { get; set; }

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

    [Required]
    public decimal Price { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

而我的控制器.

public class ProductController : Controller
{
      [HttpPost]
      public ActionResult Create(Product product)
      {
            if (ModelState.IsValid)
            {
                   // Do some creating logic...
                   return RedirectToAction("Display");
            }

             return View(product);              
      }
 }
Run Code Online (Sandbox Code Playgroud)

并测试:

[Test]
public TestInvalidProduct()
{
     var product = new Product();
     var controller = new …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc unit-testing modelstate asp.net-mvc-3

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