我有一个ASP.NET应用程序,我试图用ModelState.IsValid
返回的错误信息,如果查询是有缺陷的。我想是这样的:ModelState.IsValid返回错误类型
[HttpGet]
[Route("")]
[Route("{id:int}")]
public IQueryable<ToDoTable> Get(int id = -1)
{
if (!ModelState.IsValid)
{
var errorList = (from item in ModelState
where item.Value.Errors.Any()
select item.Value.Errors[0].ErrorMessage).ToList();
return errorList.AsQueryable();
}
else
{
if (id == -1)
return db.ToDoTables;
else
return db.ToDoTables.Where(lt => lt.ID == id);
}
}
然而,问题是errorList
是string
类型和函数需要的ToDoTable
返回类型,一类,我做了。我如何获得正确的返回类型?还是我需要改变功能的期望?我是否必须将该方法添加到类中(而不是甚至不确定这会起作用)?
当ModelState.IsValid
为真时,函数返回从我查询数据库,并将其作为JSON收集的信息类对象。例如:
[
{
"ID": 11,
"Title": "this is a test",
"Description": "this is specifically to test the put method",
"Due": null,
"Completed": true
},
{
"ID": 15,
"Title": "date test",
"Description": "datetime format",
"Due": "2015-08-10T02:41:29",
"Completed": true
}
]
完美。谢谢。这比我之前使用的'IQueryable'更有意义。 –
我有一个简单的问题,如果语句的语法。如果我正在做一个与我的问题非常相似的if语句,但是我想删除数据库中的某个项目而不是返回值?我将如何修改它以调用不返回任何值的删除方法? –
如果你已经删除了某些东西,你可以分开If语句而不是使用三元运算符(?:),删除后可以返回204“No Content”响应:return Request.CreateResponse(HttpStatusCode.NoContent); – Fermin