我用MVC设计了网站。当检查更改时,我在页面中有一个复选框,运行操作并保存数据库中的更改。我从jquery-ajax使用,但没有开火。 我的观点
@model TaavonS.Models.PaginatedList<TaavonS.Models.TaavoniInfo>
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
<div class="TableFormat">
@Html.CheckBoxFor(modelItem => item.FlagT, new { @id=item.Scode})
</div>
<script language="javascript" type="text/javascript">
$(document).ready(function () {
$("#FlagT").change(function () {
$.ajax({
url: '@Url.Action("EditTInfoNamayesh", "manager")',
type: "POST",
data: { newValue: $("#FlagT").is(':checked'), id: $("#FlagT").attr('id') }, //data,
dataType: 'json', //type of response
success: success
});
})
})
</script>
我的控制器是:
[HttpPost]
public JsonResult EditTInfoNamayesh(int id,bool newValue)
{
var model = DBConn.TaavoniInfos.Find(id);
model.FlagT = newValue;
TryUpdateModel(model);
DBConn.SaveChanges();
return Json(true);
}
请帮帮我 非常感谢
答案 0 :(得分:0)
您是否检查过item.Scode
的价值?如果item.Scode != "FlagT"
,你的js不会触发任何事情。这是因为当您编写$("#FlagT")
时,它会查找id = "FlagT"
。
如果您需要动态设置id
,请将class
设为常数值,或依赖常量id
,如下所示:
<div class="TableFormat">
@Html.CheckBoxFor(modelItem => item.FlagT, new { @id=item.Scode, @class="FlagT"})
</div>
<script language="javascript" type="text/javascript">
$(document).ready(function () {
$(".FlagT").change(function () {
$.ajax({
url: '@Url.Action("EditTInfoNamayesh", "manager")',
type: "POST",
data: { newValue: $(this).is(':checked'), id: $(this).attr('id') }, //data,
dataType: 'json', //type of response
success: success
});
})
})
</script>
答案 1 :(得分:0)
我认为change
事件将针对Dropdownlist
。如果选中复选框,则需要连接到.click
事件处理程序。
这是修改一下的javascript。
$("#FlagT").click(function () {
var isChecked = $(this).is(':checked');
//save to database if the checkbox is checked.
if(isChecked){
$.ajax({
url: '@Url.Action("EditTInfoNamayesh", "manager")',
type: "POST",
data: { newValue: $("#FlagT").is(':checked'), id: $("#FlagT").attr('id') }, //data,
dataType: 'json', //type of response
success: success
});
} else {
return false;
}
});
试试这个。
希望这有帮助。
答案 2 :(得分:0)
1.我不应该使用'@'。
<强> 2。语言=“Javascript”已弃用。
您正在使用$('#FlagT'),在开发人员工具中验证运行时生成的ID。因为你在Html属性中使用模型名称并提到'id',所以验证DOM中生成的id是什么。
然后它应该工作。如果你仍然有传递参数的问题,只需添加
'traditional:true'
到ajax中的数据帖子。它会起作用。