【问题标题】:Passing JS array to MVC controller action将 JS 数组传递给 MVC 控制器动作
【发布时间】:2012-12-24 09:58:51
【问题描述】:

在我的页面中,我有一些输入供用户输入值,然后我将获取所有值并将它们发送到服务器。现在我可以获取值并如下所示显示它们:

Cylinder: 0.00    Sphere: 0.00    Quantity:1
Cylinder: -0.25    Sphere: 0.00    Quantity:2
Cylinder: -0.50    Sphere: 0.00    Quantity:33
Cylinder: -0.75    Sphere: 0.00    Quantity:2
Cylinder: -1.00    Sphere: 0.00    Quantity:2
Cylinder: -1.25    Sphere: 0.00    Quantity:33
Cylinder: -1.50    Sphere: 0.00    Quantity:4
Cylinder: -1.75    Sphere: 0.00    Quantity:5
Cylinder: -2.00    Sphere: 0.00    Quantity:4

但我不知道如何将它们发送到行动以进行保存。我正在使用 mvc。

在视图中我编写了以下 JavaScript:

 var orderModel={};
 $(".bulkOrderNumericInput").each(function (index,element) {
        if ($(this).val().length!=0) {
            orderModel[i]={Cylinder:$(this).attr('valuex'),Sphere:$(this).attr('valuey'),Quantity:$(this).val()};
            i++;
        }
    });

谁能帮帮我?

【问题讨论】:

  • 我认为您使用的是 jQuery。您想了解如何使用 AJAX 将 JavaScript 数组发送到服务器吗?我看不到任何 MVC - 这是通用设计模式,还是您的意思是 .net 技术?
  • 谢谢大家。你真好。

标签: jquery asp.net-mvc json


【解决方案1】:
 var orderModel = [];
//loop all the inputs in the page to get values, let's say you give all the inputs a class named'.orderinput'
$('#checkout').click(function(){
    $(".orderinput").each(function(){
    orderModel.push({Cylinder:$(this).val(),Sphere:blah,Quantity:blah,...);
    });
  });

//not all values are sotred into the orderModel, the do the post
$.ajax({
        url: 'your url',
        data:JSON.stringify(orderModel),
        type: 'POST',
        contentType: 'application/json; charset=utf-8',//this is important!!
        success : function(msg) {
            //blah..
        },
        error: function (xhr, ajaxOptions, thrownError) {
            //blah...
        }
    });

【讨论】:

    【解决方案2】:

    我使用了以下tutorial,我在这个SO question 中找到了它来写这个答案。虽然此代码尚未经过测试,但希望它能让您走上正轨。如果您还有其他问题,请不要犹豫。

    在 javascript 中填充您的 orderModel 数组后,您剩下的就是使用 jquery 发布该数据。 jquery 对象包含一个ajax 方法(documentation),可以让您方便地执行此操作。下面的代码放在您的 javascript 代码末尾应该可以解决问题:

    $.ajax({
        type: 'POST',
        traditional: true,
        data: { models: orderModel }
    });
    

    请注意,此 ajax 调用将在显示页面的 URL 上执行。要选择不同的 URL,请使用以下代码:

    $.ajax(URL, { /* same data as above */ });
    

    在服务器端,按照教程,您应该有一个包含models 属性的类定义。该属性将填充您在脚本中收集的 javascript 数组数据。

    圣诞快乐!

    【讨论】:

    • 不,我用其他方式来完成。
    • 好的,您是否愿意为您的问题写下您自己的答案,以便其他人可以受益于您的体验?
    • 这实际上有正确的想法,但这是完整的答案:stackoverflow.com/questions/4499785/…
    猜你喜欢
    • 2018-03-31
    • 1970-01-01
    • 2013-09-05
    • 2014-03-17
    • 1970-01-01
    • 2015-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多