我正在尝试学习.Net 和backbone.js。我正在做一个非常简单的项目;它用于列出所有收件人并更新他们的地址和内容。我有一个 RecipientsController,它只是从数据库中获取收件人列表。这是控制器。
public ActionResult GetAllRecipients()
{
var recipients = dbContext.Recipients.ToList();
return Json(recipients, JsonRequestBehavior.AllowGet);
}
这很好用;我的主干应用程序可以接收 JSON 并正确显示它们。但我无法让编辑(PUT)工作。所以,我在谷歌上搜索了一下,发现了一个使用 ApiController 而不是 Controller 的教程。我决定试一试,所以我把Controller改成了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") }
);