0

配列()を返すメソッドがあり、string[]この文字列の配列をActionに渡そうとしています。現在、パラメーターを渡すことができません。私はMVC3の初心者です。plsは私が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にアクセスしようとしていますが、アクセスできません。詳しくはこちらのURLをご覧ください。

あなたは次の方法でそれを行うことができます。

    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指向のソリューションを知りたいと思っていると思います。あなたはおそらくZendFrameworkを使用していませんが、この回答が解決策への正しい方向を示すのに役立つことを願っています。

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 に答える