相关疑难解决方法(0)

Web API 属性路由和验证 - 可能吗?

我正在尝试将 Web API 中基于属性的路由与模型验证结合起来。我根本无法让它按照我的预期工作。

class MyRequestModel
{
    [DefaultValue("DefaultView")]
    public string viewName { get; set; }

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

[HttpGet]
[Route("myroute/{id:minlength(2)}")]
public IHttpActionResult Test(string id, [FromUri]MyRequestModel request)
{
    if (!ModelState.IsValid) { return BadRequest(ModelState); }
    // process here...
    return Json( /* result */ );
}
Run Code Online (Sandbox Code Playgroud)

虽然something验证正确,但我有一些问题:

  • 当我仅指定一个something参数值时,该值通过 OK,但viewName通过 as null,但模型状态有效 - 我期望默认值,因为没有指定任何内容
  • 当我指定空白viewName参数 ( ?something=x&viewName=) 时,它会通过 as "DefaultView",并且模型状态有效 - 我希望它作为指定的空白字符串
  • 如果我删除[FromUri],request则始终如一 …

validation asp.net-mvc modelstate asp.net-web-api

5
推荐指数
0
解决办法
1797
查看次数