У меня есть приложение 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, очень похожий на мой вопрос, но я хотел удалить элемент в базе данных, а не возвращать значение? Как мне изменить его, чтобы вызвать методы удаления, которые не возвращают никаких значений? –
Если вы что-то удалили, вы можете разделить оператор If, а не использовать тернарный оператор (? :) и после удаления вы можете вернуть ответ 204 No Content: return Request.CreateResponse (HttpStatusCode.NoContent); – Fermin