0

我有一个返回数组 ( string[]) 的方法,我正在尝试将这个字符串数组传递给 Action。目前我无法传递我的参数。我是 MVC3 的新手。请让我知道为什么我不能将参数传递给 ActionResult..我已经用相同的参数名称定义了 ActionResult..提前谢谢大家....

$('#export-button').click(function () {

            var columnLength = $("#grid")[0].p.colNames.length;
            var columnNames = "";
            for (var i = 0; i < columnLength; i++) {
                if ($("#grid")[0].p.colModel[i].hidden == false) {
                    columnNames = columnNames + $("#grid")[0].p.colModel[i].name + ',';
                }
            }
            var Val1 = jQuery(txt_search1).val();
            alert(Val1); alert(columnNames);
            document.location = '@Url.Action("OrgDataExport","Search", new { Val1 = Val1 , columnNames = columnNames})';


        });
4

3 回答 3

1

尝试这个,

$('#export-button').click(function () {

    var columnLength = $("#grid")[0].p.colNames.length;

    // columnNames is an object now
    var columnNames = {};

    for (var i = 0; i < columnLength; i++) {
        if ($("#grid")[0].p.colModel[i].hidden == false) {
            columnNames[i] = $("#grid")[0].p.colModel[i].name;
        }
    }

    var Val1 = jQuery(txt_search1).val();

    document.location = "Home/Index/" + $.param({ Val1 = Val1 , columnNames = columnNames });
});

columnNames作为字符串数组执行的操作

public ActionResult Index(string val1, string[] columnNames)
{
// Your code
}

更新:

如果 URL 变得太大,您可以使用 POST 方法通过表单提交值。如果您的视图已经有一个表单,请使用其他动态创建动态表单并通过 POST 提交值。

$('#export-button').click(function () {

    var Val1 = jQuery(txt_search1).val();    

    $("#hidden-form").remove();

    // create a form dynamically
    var form = $('<form>')
            .attr({ id: "hidden-form",
              action: "/Home/Index",
              method: "post",
              style: "display: none;"
            })
            .appendTo("body");            

    // add the "Val1" as hidden field to the form.
    $('<input>').attr({ name: "Val1 ", value: Val1, type: "hidden" }).appendTo(form);

    var columnLength = $("#grid")[0].p.colNames.length;

    // add the "columnNames" as hidden fields to the form
    for (var i = 0; i < columnLength; i++) {
        if ($("#grid")[0].p.colModel[i].hidden == false) {
            var t = $("#grid")[0].p.colModel[i].name;
            $('<input>').attr({ name: "columnNames", value: t, type: "hidden"
             }).appendTo(form);
        }
    };

    // submit the form
    form.submit();
});
于 2012-06-26T07:10:23.660 回答
0
 for (var i = 0; i < columnLength; i++) {
                if ($("#grid")[0].p.colModel[i].hidden == false) {
                    columnNames = columnNames + $("#grid")[0].p.colModel[i].name + ',';
                }
            }
            var Val1 = jQuery(txt_search1).val();
            alert(Val1); alert(columnNames);
            document.location = '@Url.Action("OrgDataExport","Search", new { Val1 = Val1 , columnNames = columnNames})';

嗨,路易斯,

您正在尝试从服务器端标记访问 javascript 变量 Val1 和 columnNames,但这是不可能的。更多详情,请参考此网址

您可以通过以下方式做到这一点。

    var jsonData = { val1 : Val1, columnNames : columnNames };

$.ajax({
          type: "GET", //GET or POST or PUT or DELETE verb
                url: "Home/Index", // Location of the service
                data: jsonData,
                contentType: "application/json; charset=utf-8", // content type sent to server
                processdata: true, //True or False
                success: function () {
                  alert("success")
                }
       });

在您的控制器方面,您必须像这样写

public ActionResult Index(string val1, string columnNames)
{
// Your code
}
于 2012-06-26T06:25:12.950 回答
0

您标记了 JQuery-Ajax 但我在代码示例中没有看到任何 ajax 尝试?所以我猜你想知道一个面向 Ajax 的解决方案。您可能没有使用 Zend Framework,但我希望这个答案能帮助您找到解决方案的正确方向。

根据 JS/Zend 框架经验,您可以查看类似

$('#export-button').click(function () {
   ....
   var actionUrl= "/controller/action/";
   $.ajax({
      url: actionUrl,
      data: {
        variable1: "OrgDataExport",
        variable2: "Search",
        Val1: Val1,
        columnNames: columnNames            
      },
      dataType: "json",
      success: function(json) {
        //do stuff
      }
   });
   ....
});

在 ZendFramework 控制器中,您可以获取请求中的变量:

$Val1 = $this->_request->getparam("Val1");
于 2012-06-26T06:25:32.317 回答