Я пытаюсь изучить .Net и backbone.js. Я работаю над очень простым проектом; это для перечисления всех получателей, а также для обновления их адресов и прочего. У меня есть RecipientsController, который просто получает список получателей из базы данных. Вот контроллер.
public ActionResult GetAllRecipients()
{
var recipients = dbContext.Recipients.ToList();
return Json(recipients, JsonRequestBehavior.AllowGet);
}
Это отлично работает; мое магистральное приложение может получать JSON и правильно их отображать. Но я не мог заставить редактирование (PUT) работать. Итак, я погуглил об этом и наткнулся на учебник, в котором вместо контроллера использовался ApiController. Я решил попробовать, поэтому я изменил контроллер на ApiController.
public IEnumerable<Recipients> GetAllRecipients()
{
return dbContext.Recipients.AsEnumerable();
}
Когда я пытаюсь использовать ApiController, магистраль выдает ошибку 404. Я не понимаю, почему.
Это мое
HomeController:
{
public ActionResult Index()
{
return View();
}
public ActionResult Recipients()
{
return View();
}
И у меня есть два представления (индекс и получатели), оба находятся в разделе «Представления/Домой». Это мой ActionLink:
<li>
<a id="recipients">@Html.ActionLink("Admin", "Recipients", "Home")</a>
</li>
Теперь, с ApiController, если я изменю ActionLink с Home на Recipients, Recipients на GetRecipients и перемещу View (Recipients) из-под Home в новую папку Recipients, тогда это сработает, но не использует мои основные представления. Я действительно смущен. Может кто-нибудь объяснить это для меня, чтобы я мог понять? Поскольку я учусь, мне было трудно понять некоторые описания, которые я нашел в Интернете (это было слишком сложно для меня), но также я не уверен, что объяснение, которое я нашел, было тем, что мне было нужно.
Заранее спасибо.
РЕДАКТИРОВАТЬ:
Вот мой маршрут:
routes.MapRoute(
"Recipients",
"{Controller}/{action}",
new { Controller = "Recipients", action = "GetAllRecipients", id = UrlParameter.Optional },
new { httpMethod = new HttpMethodConstraint("GET") }
);