2017-04-16 29 views
1

すべてのチェックされたromsIdsを収集し、コントローラメソッドに渡すJQuery関数がありますが、コントローラメソッドを呼び出すことはありません。 コントローラ名:ApproveURLsControllerJQuery関数AjaxメソッドがMVCのコントローラを呼び出さない

ここに私のコード:上記のコードで

$("#Approve").click(function() { 

    checkedIds = $(".ckb").filter(":checked").map(function() { return this.id; }); 

    $.ajax({ 
     type: "POST", 
     url: "@Url.Action("ApproveOrRejectAll", "ApproveURLs")", 
     traditional: true, 
     data: { Ids: checkedIds.toArray() , Status: "A" }, 
     success: sucessFunc, 
     error: errorFunc 
    }); 

    function successFunc(data, status) { 

     location.reload(); 
    } 
    function errorFunc(data, status) { 

     alert('error'); 
    } 
}); 

"承認" は、私がこの

<input type="button" value="Approve" id="Approve" class="btn btn-primary" /> 

と私のコントローラメソッド

のように定義されているボタンであり、
[HttpPost] 
public void ApproveOrRejectAll(List<int> Ids, string Status) 
{ 

} 

私は問題を見つけることができません親切に私を助けてください。

答えて

0

目的の値を保持するモデルを作成します。クライアント側で定義されたモデル

[HttpPost] 
public void ApproveOrRejectAll([FromBody]ApproveOrRejectAllModel model) { 
    List<int> Ids = model.Ids; 
    string Status = model.Status; 

    //..other code 
} 

を使用する

public class ApproveOrRejectAllModel { 
    public List<int> Ids { get; set; } 
    public string Status { get; set; } 
} 

更新アクションデータが正しく送信されていることを確認します。

$("#Approve").click(function() { 

    checkedIds = $(".ckb").filter(":checked").map(function() { return this.id; }); 

    //Constructing payload to be posted. 
    var model = { Ids: checkedIds.toArray(), Status: "A" }; 

    $.ajax({ 
     type: "POST", 
     url: "@Url.Action("ApproveOrRejectAll", "ApproveURLs")", 
     traditional: true, 
     data: JSON.stringify(model), //<-- stringify data to be sent. 
     success: sucessFunc, 
     error: errorFunc 
    }); 

    function successFunc(data, status) { 

     location.reload(); 
    } 
    function errorFunc(data, status) { 

     alert('error'); 
    } 
}); 
0

回避策なしで、HTTP経由で非ActionResult関数を呼び出すことはできません。

あなたの空白ApproveOrRejectAll(...)の上に[WebMethod]を埋め込むか、タイプをActionResultに変更する必要があります。

0

使用は、この使用してJavaスクリプト配列を達成することができます

ビュー: -

<div> 
    <input type="checkbox" name="checkBoxHeader" class="checkBoxHeader" value="1" /> 1 
    <input type="checkbox" name="checkBoxHeader" class="checkBoxHeader" value="2" /> 2 
    <input type="checkbox" name="checkBoxHeader" class="checkBoxHeader" value="3" /> 3 
</div> 

<div class="form-group"> 
    <div class="col-md-offset-2 col-md-10"> 
     <input type="submit" value="Login" class="btn btn-default" id="btnSummit"/> 
    </div> 
</div> 
@Scripts.Render("~/bundles/jquery") 
<script type="text/javascript"> 
    var obj; 
    $(".checkBoxHeader").click(function() { 
     var checkBoxValueToPush = new Array(); 

     //checked check box value 
     $('.checkBoxHeader:checked').each(function() { 
      checkBoxValueToPush.push($(this).val()); 
     }); 
     obj = { 
      CheckeBoxdIds: checkBoxValueToPush 
     }; 
    }); 
    $("#btnSummit").click(function() { 
     $.ajax({ 
      url: '/Default/filterData', 
      contentType: 'application/json; charset=utf-8', 
      type: 'POST', 
      data: JSON.stringify(obj), 
      cache: false, 
      success: function() { 
      }, 
      error: function (xhr, status, error) { 
       alert("Error"); 
      } 
     }); 
    }); 
</script> 

コントローラー: -

[HttpPost] 
     public void filterData(List<int> CheckeBoxdIds) 
     { 
      // Code 
     } 

はそれを動作ホープ!!!

ハッピーコーディング!

0

こんにちは、あなたのコードに欠けているものはほとんどありません.AJAXを使用してコントローラを呼び出す例を説明します。

//Define the type of result you want from you controller here I m describing for JSONResut 
    //Controller with 2 parameter's make sure the type and name of parameter posted is same as written in controller method. 
    public JsonResult SaveEmployeeRecord(string id,string name) 
    { 
     string this_id = id; 
     string this_name = name; 
     // do here some operation 
     return Json(new {id=this_id,name = this_name },JsonRequestBehavior.AllowGet); 
} 

//View /Javascript to call action method 
$.ajax({ 
      type: 'POST', 
      dataType: 'json', 
      url: '/Home/SaveEmployeeRecord', 
      data: { id: '67', name: 'Prashant' }, 
      success: function (Data) { 
       alert(data.id); 
       alert(data.name); 
      }, 
      error: function (XMLHttpRequest, textStatus, errorThrown) { 

      } 
     }); 
関連する問題