Новое для MVC и шаблон API, знакомый с C#.Вложенные функции в контроллере
Простой новый проект WebAPI с простым контроллером. Url путь, как /api/Clients/1
, есть ли способ сортировать гнездо контроллеров? Или выполните функцию в том же контроллере, следуя URL-адресу, подобному этому: /api/Clients/1/Sysinfo/typeOf
?
У меня есть модель Client, которая содержит свойства, которые являются объектами sysinfo./api/Clients/1 возвращает все свойства объекта Client с идентификатором 1. Я хочу, например, указать только определенные элементы, возвращенные с помощью/api/Clients/1/Sysinfo/RAM.
@Joachim Rosskopf Я попробовал этот подход. Это приводит к 404./clients/1/works./clients/1/sysinfo не работает.
Используя следующие маршруты:
routes.MapRoute(
name: "Sysinfo",
url: "Clients/{id}/Sysinfo/{type}",
defaults: new { controller = "Sysinfo", type = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Создано новый контроллер SysinfoController:
public class SysinfoController : ApiController
{
public Sysinfo GetAllSysinfoItems()
{
return new Sysinfo { Id = 1, RAM = "1GB" };
}
public IHttpActionResult GetSysinfoByType(int id)
{
return Ok();
}
}
Вы имеете в виду, что хотите обрабатывать * оба типа этих URL-адресов? – James
Эта ссылка на контроллеры и маршрутизацию может помочь: http://www.asp.net/mvc/overview/controllers-and-routing – Markus
Да, действительно. Как сказано, я новичок в MVC, это просто логическая ошибка. У меня есть модель Client, которая содержит свойства, которые являются элементами sysinfo./api/Clients/1 возвращает все свойства объекта Client с идентификатором 1. Я хочу, например, указать только определенные элементы, возвращенные с помощью/api/Clients/1/Sysinfo/RAM. – z7gsr32cod586mic4a5e