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




return json (4)

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

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

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

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

لقد حاولت بعد ظهر اليوم كله الزحف من خلال شبكة الإنترنت في محاولة لاستقبال كائن 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.


هناك مشكلتين هنا. أولاً ، يجب التأكد من ربط كائن 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);
        }
   });

لسوء الحظ ، يعاني القاموس من مشاكل في نموذج الربط في MVC. اقرأ القصة الكاملة هنا . بدلاً من ذلك ، قم بإنشاء موثق طراز مخصص للحصول على القاموس كمعلمة لإجراء وحدة التحكم.

لحل متطلباتك ، هنا هو حل العمل -

قم أولاً بإنشاء ViewModels بالطريقة التالية. يمكن أن يكون PersonModel قائمة من RoleModels.

public class PersonModel
{
    public List<RoleModel> Roles { get; set; }
    public string Name { get; set; }
}

public class RoleModel
{
    public string RoleName { get; set;}
    public string Description { get; set;}
}

ثم يكون لديك إجراء فهرس والذي سيخدم عرض الفهرس الأساسي -

    public ActionResult Index()
    {
        return View();
    }

ستظهر طريقة عرض الفهرس بعد عملية JQuery AJAX POST -

<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script>
    $(function () {
        $('#click1').click(function (e) {

            var jsonObject = {
                "Name" : "Rami",
                "Roles": [{ "RoleName": "Admin", "Description" : "Admin Role"}, { "RoleName": "User", "Description" : "User Role"}]
            };

            $.ajax({
                url: "@Url.Action("AddUser")",
                type: "POST",
                data: JSON.stringify(jsonObject),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                error: function (response) {
                    alert(response.responseText);
            },
                success: function (response) {
                    alert(response);
                }
            });

        });
    });
</script>

<input type="button" value="click1" id="click1" />

نشر مشاركات الإجراء إلى إجراء AddUser -

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

    }

حتى الآن عندما يحدث آخر يمكنك الحصول على جميع البيانات المنشورة في نموذج العمل من العمل.





actionmethod