#.net #razor #asp.net-mvc-5
#.net #razor #asp.net-mvc-5
Вопрос:
Не удается неявно преобразовать тип ‘DoctorFront.Модели.DocMaster’ to ‘System.Коллекции.IEnumerable’. Существует явное преобразование (вам не хватает приведения?)
namespace DoctorFront.Controllers
{
public class DoctorController : ApiController
{
static readonly IDocRepositories Repository =new DocRepositories();
public IEnumerable GetAllDoctor()
{
return Repository.GetAll();
}
public IEnumerable GetDoctor(int id)
{
return Repository.Get(id);
}
}
}
Комментарии:
1. Я предполагаю, что ваш
GetDoctor
метод предназначен для возвратаDocMaster
, верно?2. измените возвращаемый тип на что-то вроде
DocMaster
.3. Да, он возвращает главную таблицу документа
4. спасибо @Амит Кумар Гош, это сработало
Ответ №1:
public IEnumerable GetDoctor(int id)
{
return Repository.Get(id); // problem here
}
Предполагается, что ваш метод GetDoctor
возвращает объект типа IEnumerable . Ваш оператор return возвращает только один DocMaster
объект.
Так что это должно сработать:
public DocMaster GetDoctor(int id)
{
return Repository.Get(id);
}
Надеюсь, это поможет!
Ответ №2:
Как и в любом методе, ваш возврат должен соответствовать объявлению метода. Итак, если у вас есть метод public IEnumerable Get(int id)
, вам нужно будет вернуть любой класс, который реализует IEnumerable
.
Приведенный BviLLe_Kid пример показывает его правильное исправление, чтобы перестать получать эту ошибку.
Вот более полный пример:
public IHttpActionResult Get(int id)
{
var doc = Repository.Get(id);
if (doc == null)
return NotFound();
return Ok(doc);
}
Если вы работаете с Web API
, полезно прочитать о rest