2016-09-28 51 views
0

我把一個自舉開關撥到我的應用程序 現在我想是在開啓和關閉值發送到我的操作方法在asp.net MVC從JavaScript將數據傳遞到操作方法

貝婁是我的剃刀語法

@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>} 

對於來自JS將數據傳遞到控制器我已經搜查了許多文章,發現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 
} 

貝婁是我的開關按鈕圖像

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

實際上我只是想通過命令名稱打開或關閉我的行動方法 – faisal1208

+1

除了Rory的評論,你還沒有指定你張貼到服務器通過裝飾你的動作方法正確的屬性'[HTTPPOST]'我認爲默認情況下它的設置爲'[HTTPGET]' –

回答

0

您需要使用$字符invoque jQuery功能和頁面之間傳遞數據與您在使用操作方法定義的同名控制器符號:

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

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

此外,您可能需要來裝飾你的蒙山屬性[HttpPost] MVC行動。

+0

我沒有看到他的示例代碼中的差異和你的解決方案。 – Iztoksson

+0

@ Uporabnik003查看數據屬性。 – anmarti

+0

@anmarti請參閱我的更新代碼 – faisal1208

相關問題