【发布时间】:2018-08-16 07:56:44
【问题描述】:
我在将剃须刀页面中的 java 脚本中的值发布到控制器时遇到问题。 - 收到的值始终为空。
我看到有人问过类似的问题,但未能找到解决问题的正确方法。
我在控制器中遇到了一个断点,(所以路由没问题)但是传递的参数值始终为空,并且不是 java-script 中最清晰的,我想请大家给我一些提示。
我基本上有下面的java脚本:
var clickButton = function (buttonId) {
$.ajax({
type: "POST",
async: false,
cache: false,
crossDomain: false,
contentType: "application/json; charset=utf-8",
url: "v1/buttons",
dataType: "json",
data: '{ buttonId:'+JSON.stringify( "buttonId" ) + '}',
success: function (result) {
//console.log("clickButton OK => " + result);
}, //success: function (result) {
timeout: 500 // 0.5 sec.
}); //$.ajax({
}//var clickButton = function(buttonNo) {
还有下面的 C# 控制器代码:
[Route( "v1/[controller]" )]
public class ButtonsController : Controller
{
...
[HttpPost]
public IActionResult OnButtonClicked( string buttonId )
{
// buttonId = null !!!
...
我在将布尔值传递给另一个控制器时遇到了类似的问题。 其中 bool 始终为 false .. 即默认值。 我想知道这是否是一个安全问题,当用户未经授权时,不允许帖子包含数据......
【问题讨论】:
-
尝试简单的
data: { buttonId: buttonId }。我认为JSON.stringify是不必要的,除非您想在控制器端传递作为数组或List<T>参数传递的JSON 对象。 -
我之前尝试过,然后又做了一次。它没有解决问题,buttonId 在 C# 控制器中仍然为空。 (但你是对的 JSOn 在这里把事情搞得一团糟......)
标签: javascript c# controller asp.net-ajax asp.net-core-2.1