asp.net - httppost - كيفية استقبال JSON كمعلمة طريقة عمل MVC 5




return json (3)

لقد حاولت بعد ظهر اليوم كله الزحف من خلال شبكة الإنترنت في محاولة لاستقبال كائن JSON في وحدة تحكم العمل.

ما هي الطريقة الصحيحة أو الأسهل للقيام بذلك؟

لقد جربت ما يلي: 1:

    //Post/ Roles/AddUser
    [HttpPost]
    public ActionResult AddUser(String model)
    {
        if(model != null)
        {
            return Json("Success");
        }else
        {
            return Json("An Error Has occoured");
        }

    }

الذي أعطاني قيمة فارغة على مدخلاتي.

2:

    //Post/ Roles/AddUser
    [HttpPost]
    public ActionResult AddUser(IDictionary<string, object> model)
    {
        if(model != null)
        {
            return Json("Success");
        }else
        {
            return Json("An Error Has occoured");
        }

    }

الذي يعطيني خطأ 500 على الجانب مسكي الذي يحاول نشره؟ (وهذا يعني أنها لم تربط بشكل صحيح).

هنا هو رمز jQuery الخاص بي:

<script>
function submitForm() {

    var usersRoles = new Array;
    jQuery("#dualSelectRoles2 option").each(function () {
        usersRoles.push(jQuery(this).val());
    });
    console.log(usersRoles);

    jQuery.ajax({
        type: "POST",
        url: "@Url.Action("AddUser")",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: JSON.stringify(usersRoles),
        success: function (data) { alert(data); },
        failure: function (errMsg) {
            alert(errMsg);
        }
    });
}

كل ما أريد فعله هو تلقي كائن JSON الخاص بي في إجراء mvc الخاص بي؟


fwiw ، هذا لم يعمل بالنسبة لي حتى كان لي هذا في دعوة اياكس:

contentType: "application/json; charset=utf-8",

باستخدام Asp.Net MVC 4.


أنت ترسل مجموعة من السلسلة

var usersRoles = [];
jQuery("#dualSelectRoles2 option").each(function () {
    usersRoles.push(jQuery(this).val());
});   

لذا قم بتغيير نوع الموديل وفقًا لذلك

 public ActionResult AddUser(List<string> model)
 {
 }

هناك مشكلتين هنا. أولاً ، يجب التأكد من ربط كائن JSON الخاص بك مرة أخرى بالطراز في وحدة التحكم. يتم ذلك عن طريق تغيير

data: JSON.stringify(usersRoles),

إلى

data: { model: JSON.stringify(usersRoles) },

ثانيًا ، أنت لست ملزمًا بشكل صحيح بمكالمة jquery الخاصة بك. إذا قمت بإزالة

contentType: "application/json; charset=utf-8",

ستربط بطبيعتها إلى سلسلة.

كل ذلك معًا ، استخدم طريقة ActionResult الأولى واستدعاء ajax التالي في jquery:

    jQuery.ajax({
        type: "POST",
        url: "@Url.Action("AddUser")",
        dataType: "json",
        data: { model: JSON.stringify(usersRoles) },
        success: function (data) { alert(data); },
        failure: function (errMsg) {
        alert(errMsg);
        }
   });




actionmethod