jquery - 如何从 Razor Pages 渲染屏幕对 MVC 控制器进行异步调用
问题描述
我正在使用 Razor Pages,但我需要对 MVC 控制器进行异步调用,以便我可以设置会话变量并将用户设置保存到数据库中。这是适用于所有页面的横切关注点。我看不到任何方法可以像使用父控制器那样为 Razor Pages 提供超类,因此这似乎是一个可以接受的解决方法。但是,我收到了 HTTP 405 响应,这意味着 Web 服务器可以识别该路由,但不允许该路由。
public class DefaultController : Controller
{
public IActionResult Index()
{
return View();
}
[HttpGet("Default/UpdateSelectedPermit/{id}")]
public IActionResult UpdateSelectedPermit(string id)
{
HttpContext.Session.SetString("Permit", id);
return Json("success");
}
}
这是前端:
$("#permitsSelect").on('change', function (e) {
console.log('Permit selection change: ' + $(this).val());
$.ajax({
method: "POST",
url: 'Default/UpdateSelectedPermit/' + $(this).val(),
contentType: 'application/json; charset=utf-8'
});
});
解决方案
看起来您正在尝试POST
设置为GET
with的控制器操作HttpGet
。您可以将 ajax 更改为 a GET
,或将控制器更改为HttpPost
405 错误表示Method Not Allowed
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405
$.ajax({
method: "GET",
url: 'Default/UpdateSelectedPermit/' + $(this).val(),
contentType: 'application/json; charset=utf-8'
});
推荐阅读
- jmeter - JMeter:尽管用户负载增加,但吞吐量相同的可能原因是什么
- azure-devops - 在自定义 Azure DevOps 任务/扩展中发送对象数组
- python - Python Socket 没有接收到发送给它的消息
- python - 如何更快地迭代二维的 Python numpy.ndarray
- python-3.x - numba-TypingError:在 nopython 模式管道中失败(步骤:nopython 前端)非精确类型 pyobject
- module - Rust 中的跨模块函数调用
- c# - .NET Core 洋葱架构中的依赖注入
- docker - 如何通过远程 docker 的代码设置 repoLayoutRef
- javascript - 互动板
- php - 使用 PHP 删除除 alt 代码之外的特殊字符