2016-09-28 15 views
0

asp.net MVCでアクションメソッドにJavaScriptからデータを渡すと、私のアクションメソッドにオンとオフ値を送信するために私はしたい私は今、自分のアプリケーション にブートストラップトグルスイッチを配置している

ベローは私のかみそりの構文ですJSからコントローラにデータを渡すための

@using (Html.BeginForm()) 
{ 
@Html.AntiForgeryToken() 
@Html.ValidationSummary(true) 

<fieldset style="height:60px"> 
    <legend style="text-align:center; font-size:large; font-family:'Times New Roman'; background-color:#C8E6C9; color:red">Remote On/Off</legend> 
    <input id="test_id" name="cmdName" type="checkbox" checked data-toggle="toggle"> 

</fieldset>} 

私は多くの記事を検索し、AJAXはそれをベローはJS

内部AJAXのための私のスクリプトです

を行う方法であることを発見しました

<script> 
var cmdName = '@Session["cmdName"]'; 


    $("#test_id").on("change", function (event) { 
     if ($(this).is(":checked")) { 
      $.ajax({ 
       url: '@Url.Action("MultiGraph")', 
       type: 'Post', 
       data: 'On', 
       success: function() { 
        alert(data) 
       } 
      }); 
     } else { 
      $.ajax({ 
       url: '@Url.Action("MultiGraph")', 
       type: 'Post', 
       data: 'Off', 
       success: function() { 
        alert(data) 
       } 
      }); 
     } 
    }); </script> 
私はまた、ベローは私のスイッチボタンの画像私のコントローラのコード

public ActionResult MultiGraph(string search, string start_date, string End_date, string cmdName, int? page) 
{ 
//search contain serial number(s) 
//cmdName is for input checkbox 
} 

ベロー

されている

でセッション変数はなくなって、null値を使用している

enter image description here

私がに切り替えるとオフその後、このオフ文字列は、私のアクションメソッドに送信され、私はの新しいアクションメソッドを追加している私のコード

に次の変更を行っているコメントを読んだ後にその逆

更新されたコード

を万力する必要がありますPost

[HttpPost] 
    public ActionResult ToggleSwitch (string search, string cmdName) 
    { 
     List<SelectListItem> items = new List<SelectListItem>(); 

     var dtt = db.ADS_Device_Data.Select(a => a.Device_Serial_Number).Distinct().ToList(); 

     foreach (var item in dtt) 
     { 
      if (!string.IsNullOrEmpty(item)) 
      { 
       items.Add(new SelectListItem { Text = item, Value = item }); 
      } 
     } 

     ViewBag.search = items; 

     return View(); 
    } 

ベローは私のかみそりの変化をされている入力

$("#test_id").on("change", function (event) { 
     if ($(this).is(":checked")) { 
      $.ajax({ 
       url: '@Url.Action("ToggleSwitch")', 
       type: 'Post', 
       data: '{"cmdName": "On"}', 
       success: function() { 
        alert(data) 
       } 
      }); 
     } else { 
      $.ajax({ 
       url: '@Url.Action("ToggleSwitch")', 
       type: 'Post', 
       data: '{"cmdName": "Off"}', 
       success: function() { 
        alert(data) 
       } 
      }); 
     } 
    }); 

は、しかし、それでもまだ、私は要素を検査するとき、私は任意の助けをいただければ幸いです

このエラー

enter image description here

私はほとんど2日

からこの問題にこだわっていますを発見し、何の警告メッセージが出ない

+2

あなたのアクションは4つ(またはオプションで5つ)のパラメータを取りますが、単一の文字列を渡すだけです。 「オン」または「オフ」のいずれかである。それでは、パラメータ名を –

+0

にしていないのですが、実際には、コマンドの名前をOnまたはOffにしたいのですか? – faisal1208

+1

さらにRoryのコメントに加えて、あなたはあなたのアクションメソッドを装飾してサーバーに投稿しています。正しい属性 '[HTTPPOST]'私はデフォルトで '[HTTPGET]'に設定されていると思います。 –

答えて

0

$文字を使用してjQuery関数を呼び出し、を使用してアクションメソッドで定義したのと同じ名前のページからコントローラにデータを渡す必要があります表記:

 '{"cmdName": "On"}', 

     $.ajax({ 
      url: '@Url.Action("ToggleSwitch")', 
      type: 'Post', 
      data: '{"cmdName": "On"}', 
      success: function() { 
       alert(data) 
      } 

さらに、あなたは[HttpPost]属性whithあなたのMVCのアクションを飾るために必要がある場合があります。

+0

彼のサンプルコードあなたのソリューション。 – Iztoksson

+0

@ Uporabnik003データプロパティを見てください。 – anmarti

+0

@anmarti最新のコードをご覧ください – faisal1208

関連する問題