PDA

View Full Version : ارسال null به کنترولر از طریق Ajax



ehsan_kabiri_33
جمعه 19 اردیبهشت 1399, 18:47 عصر
سلام. در ASP.net Core3.1/Mvc Pattern/ Web Application یک دکمه داریم که با کلیک روی آن تابع زیر را اجرا میکنه :

function LoadUpsert() {
var request = { name: "John", age: 31, city: "New York" };

$.ajax({
type: "post",
cache: false,
url: "/Admin/Category/Upsert",
data: JSON.stringify(request),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (result) {
alert(result);
},
error: function (result) {
alert("No Connection to server");
},
});
}




و اینم اکشن متد موجود در کنترولر هست :

[Area("Admin")]
public class CategoryController : Controller
{
[HttpPost]
public IActionResult Upsert([FromBody] string myJSON)
{
string myMessage = (myJSON != null) ? "Not Null" : "isNull";
return Json(myMessage);

}

مشکل اینه که حتی یک int را هم نمیتونم به اکشن متد مربوطه بفرستم و در حالت دیباگ همیشه مقدار myJSON ورودی اکشن متدم نال هست و در نتیجه با زدن دکمه و اجرای تابع جاوا اسکریپت همیشه isNull جواب میاد ...

ممنون میشم کسی بتونه راهنمایی کنه... همه stackOverFlow را هم خوندم همشوم میگن stringify بذار یا نذار/FromBody در core باید باشه/نباشه. اینا جواب نداد.:ناراحت:

ehsan_kabiri_33
جمعه 19 اردیبهشت 1399, 21:20 عصر
Solved
بعد از دو روز کاری حل شد. ورودی اکشن متد باید حتما از نوع یک کلاس/آبجکت باشد. یعنی یا باید اطلاعات ارسال شده از جنس یک Model/ModelView باشد مثلا به نام people و مطابق زیر نوشته شود:

public IActionResult Upsert([FromBody]People myJSON)
or:

public IActionResult Upsert([FromBody]object myJSON)