Kie*_*one 5 validation asp.net-mvc modelstate asp.net-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则始终如一nullid必须是参数,而不是请求模型的一部分),这意味着 - 我认为 - 我不能对路由参数使用模型状态验证我正在手动验证参数,但我想我会尝试利用模型状态验证的预构建功能和强大功能。然而,我承认,由于有关 MVC、Web API 及其各种版本的大量重叠且有时相互矛盾的文档,我无法找到任何单一的事实来源 - 只有 ASP.NET 站点上的快速入门指南。这里也非常欢迎指点!
难道就不可能按照我期望的方式将这些东西结合起来吗?没有DefaultValueAttribute做我认为的那样吗?我是否可以不以某种方式验证控制器的所有参数 - 包括作为路由一部分出现的参数?
| 归档时间: |
|
| 查看次数: |
1797 次 |
| 最近记录: |