【发布时间】:2019-07-24 16:15:02
【问题描述】:
所以我一直在努力在我的 ASP.NET MVC 网站应用程序中从 CSHTML 页面向控制器发出简单的请求。我正在使用 Ajax 来尝试 DELETE 调用:
$.ajax({
url: "/company/delete",
type: "DELETE",
success: function (e) {
showAlert('Success!');
}
});
并且只是在控制器端返回一个 JSON:
public class CompanyController : BaseController
{
protected readonly IHttpClientFactory _clientFactory;
public CompanyController(IHttpClientFactory clientFactory)
{
_clientFactory = clientFactory;
}
[HttpDelete]
[Route("company/delete")]
public JsonResult DeleteCompany()
{
return Json("ok");
}
}
BaseController.cs:
[Authorize(Policy = "IsLoggedIn")]
public class BaseController : Controller
{ }
我看到的所有其他实现都是这样的。我尝试使用@Url.Action("DeleteCompany", "Company") 作为Ajax URL,删除路由并请求/Company/DeleteSite,在我使用身份验证时添加[AllowAnonymous] 标签,没有任何效果。它总是会返回一个400 Bad Request错误(至少不是404)。
我没有启动项目,所以我不知道是否有任何其他配置可以设置和从View访问Controller。请注意,我可以从 Ajax 访问我的 API,也可以从 Controller 访问 API,但我无法通过 Ajax 从 View 访问 Controller。
【问题讨论】:
-
您是否尝试过指定
[Route("/company/delete")]? (注意前面的斜线) -
@Alexander 刚试过,还是收到错误 400 返回,同样的情况。
-
您可能需要为删除添加动词。不确定默认情况下是否存在。您确定要使用 DELETE 而不是 get 或 post 吗?公司是文件吗?
-
@pcalkins 不只是 DELETE 方法不起作用,我尝试过使用 POST 和 GET。
-
请同时发布您的控制器类代码
标签: c# asp.net ajax asp.net-mvc