5

私はプロジェクトに取り組んでおり、javaScript配列「selectedZonesList」を送信し、データをフォームデータとともにコントローラーに保持する必要があります。Ajax.BeginForm を使用するように 1 つの提案がありましたが、すべてのパーツをまとめるのに苦労しています...

部分的に

@using (Html.BeginForm("CreateNewFeeScheme", "Qualification", FormMethod.Post, new { id = "NewFeeSchemeForm" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)

   //rest of code to take user input for all variables ..

<input type="submit" value="Create" class="btn btn-default" />
}

JavaScript 関数

 <script type="text/javascript">

 var selectedZonesList = new Array();

 function AddFeeZoneToScheme(e)
 {

    var entityGrid = $("#FeeZoneGrid_02").data("kendoGrid");

    var selectedZone = entityGrid.dataItem(entityGrid.select());

    selectedZone = selectedZone.FeeZoneID;

    selectedZonesList.push(selectedZone); 
}

</script>

コントローラ

  [HttpPost]
    public ActionResult CreateNewFeeScheme(FeeScheme newSchemeData, ??????)
    {
4

3 に答える 3

0

JavaScript オブジェクトを 2 つの方法でサーバーに渡すことができます。

  1. フォームの要素にオブジェクトを割り当てて、フォームを投稿するとコントローラーにオブジェクトが取得されます。

  2. Ajax post を使用し、オブジェクトにフォーム データを添付してサーバーに送信します。

SOに関する同様の質問

ajax postを介してJS配列オブジェクトをmvcに投稿する

于 2014-02-06T10:00:49.930 に答える
0

両方のデータを一緒に送信するという問題がありますが、ラミラミルガイドのおかげで、解決策を見つけました....

SerializeObject プラグインを入手する

$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
   if (o[this.name]) {
       if (!o[this.name].push) {
           o[this.name] = [o[this.name]];
       }
       o[this.name].push(this.value || '');
   } else {
       o[this.name] = this.value || '';
   }
});
return o;
};

脚本

    function submit_createNewFeeScheme()
{

    $.ajax({
        type: "Post",
        url: "/Qualification/CreateNewFeeScheme",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify({ ZonesList: selectedZonesList, newFeeSchemeData:  $("#NewFeeSchemeForm").serializeObject() }),
        success: function (data) {
            alert(data);
        },
        error: function (jqXHR, textStatus, errorThrown) {
        }
    });
}
于 2014-02-06T14:45:41.310 に答える