私はMVCプロジェクトをコアに移行しています。
モデルと文字列のパラメータをコントローラに渡すことができますが、INTは私のために機能していません。
コントローラ内の_[FromBody]string objId
_などのStringパラメータとしてJSONオブジェクトにそれらをJSONオブジェクトに折り返すことができますが、JSON _{'objId' : 1}
_からint valを解析する必要があります。
私はこれを避けてintを渡すことができる方法はありますか?
以下は私が試みているコードです。
_[HttpPost]
public JsonResult PassIntFromView([FromBody]int objId)
{
//DO stuff with int here
}
_
これがJSです。
_var data = { "objId": 1};
$.ajax({
url: '@Url.Action("PassIntFromView", "ControllerName")',
data: JSON.stringify(data),
type: "POST",
dataType: 'JSON',
contentType: "application/json",
success: function(data) {
//do stuff with json result
},
error: function(passParams) {
console.log("Error is " + passParams);
}
});
_
コントローラ内のobjId
は常に0です。
JSON.stringify(data)
も実行せずにこれを試してみました。
私はまた、さまざまな形式の属性のバリエーションをすべて試しました。
ContentTypeを'application/x-www-form-urlencoded'
として使用してみてください。
var data = { objId: 1 };
$.ajax({
url: '@Url.Action("PassIntFromView", "ControllerName")',
type: "post",
contentType: 'application/x-www-form-urlencoded',
data: data,
success: function (result) {
console.log(result);
}
});
次に、コントローラ内の[FromBody]
属性を削除します
[HttpPost]
public JsonResult PassIntFromView(int objId)
{
//Do stuff with int here
}
私はあなたの問題があなたがオブジェクトをAPIに渡しているが、それをプリミティブに変換しようとしていることであると思います。私はすでに選択された答えがあることを知っていますが、これを旋回させてください。
var data = { };
data["objId"] = 1; //I just wanted to show you how you can add values to a json object
$.ajax({
url: '@Url.Action("PassIntFromView", "ControllerName")',
data: JSON.stringify(data),
type: "POST",
dataType: 'JSON',
contentType: "application/json",
success: function(data) {
//do stuff with json result
},
error: function(passParams) {
console.log("Error is " + passParams);
}
});
_
モデルクラスを作成します
public class MyModel {
public int ObjId {get;set;}
}
_
あなたのコントローラーはこれらのうちの1つを期待するべきです
[HttpPost]
public JsonResult PassIntFromView([FromBody] MyModel data)
{
//DO stuff with int here
}
_
JSONは整数ではない文字列が好みます。 json.stringify(データ)を使用してコントローラを解析し、それをコントローラ内の整数に変換してから、次のように返された文字列を解析してください。
var data = { objId: 1};
$.ajax({
url: '@Url.Action("PassIntFromView", "ControllerName")',//asp.net - url: 'api/controllerName/controllerFunction'
data: JSON.stringify(data),
type: "POST",
dataType: 'JSON',
contentType: "application/json",
success: function(data) {
var result = JSON.parse(data);
//do stuff with json result
},
error: function(passParams) {
console.log("Error is " + passParams);
}
});
_
これを試して:
var data = { "objId": 1};
$.ajax({
url: '@Url.Action("PassIntFromView", "ControllerName")',
data: data,
type: "POST",
dataType: 'JSON',
contentType: "application/json",
success: function(data) {
//do stuff with json result
},
error: function(passParams) {
console.log("Error is " + passParams);
}
});
_
あなたのコントローラ:
[HttpPost]
public JsonResult PassIntFromView(int objId)
{
//DO stuff with int here
}
_
Js.
var data = { "objId": 1};
$.ajax({
url: "ControllerName/PassIntFromView",
data: data,
type: "POST",
dataType: 'JSON',
success: function(data.result!=null) {
console.log(data.result);
},
error: function(passParams) {
console.log("Error is " + passParams);
}
});
_
私はそれがこのように働きました
let numberFour = JSON.stringify(4);
$.ajax({
.......
.......
data: numberFour,
type: "POST",
dataType: 'JSON',
contentType: "application/json",
......
........
});
_