我把一个自举开关拨到我的应用程序 现在我想是在开启和关闭值发送到我的操作方法在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
}
贝娄是我的开关按钮图像
当我切换到关闭那么这关字符串应该被发送到我的操作方法,并反之亦然
更新的代码
阅读评论我也做了以下更改我的代码
我已经添加了一个新的操作方法后,键入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)
}
});
}
});
但我仍然没有得到警告信息,当我检查元素,我发现这个错误
我坚持这个问题几乎2天
任何帮助,将不胜感激
您的操作需要4个(或可选的5个)参数,但您只传递一个字符串; “开”或“关”。即使你没有提供参数名称 –
实际上我只是想通过命令名称打开或关闭我的行动方法 – faisal1208
除了Rory的评论,你还没有指定你张贴到服务器通过装饰你的动作方法正确的属性'[HTTPPOST]'我认为默认情况下它的设置为'[HTTPGET]' –