我有一个问题,我希望有人有时间看。我在mvc 3测试项目中查看了表格。里面的桌子有复选框。每当我点击它们时,我都会尝试保存这些复选框。我尝试使用java脚本,尝试了很多来自互联网的例子,但对我来说仍然没有运气。有人可以帮忙吗? :)
这是我的观点:
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.date)
</td>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.section)
</td>
<td>
@Html.CheckBoxFor(modelItem => item.check, new { onclick = "SomeMethod(this)" });
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.idImovine })
</td>
</tr>
}
</table>
<script type="text/javascript">
function SomeMethod(checkboxInput) {
$.ajax({
type: 'POST',
url: 'Home/Action',
data: { newValue: checkboxInput.checked },
success: success,
dataType: 'json'
});
}
</script>
这是我的控制器
public JsonResult Action(bool newValue)
{
var model = con.pro.Single(r => r.id == id);
TryUpdateModel(model);
con.SubmitChanges();
return Json(true)
}
我正在使用linq to sql访问db。有人可以告诉我我做错了什么,我的意图是在点击时将复选框保存在dv中,但是该复选框被点击在一个来自视图的表中,它需要保存到另一个tabe,所以我我猜我需要传递视图内部的id,以及复选框值。
答案 0 :(得分:2)
您可能需要传递复选框所代表的记录的ID。所以让我们像这样更新您的剃刀代码。
@foreach (var item in Model)
{
<tr>
<td>
@Html.CheckBoxFor(modelItem => item.check,
new { @id=item.ID, @class="chks"});
</td>
</tr>
}
现在我们将有一些非营养的javascript,它会侦听复选框的点击事件
<script type="text/javascript">
$(function(){
$(document).on("click","input.chks", function (e) {
var _this=$(this);
var isChecked = _this.is(':checked');
$.post("@Url.Action("Update","Home")?id="+_this.attr("id")+
"&newValue="+isChecked,function(data){
// do something with the response
});
});
});
</script>
现在确保您的Update
方法正在接受2个参数
[HttpPost]
public ActionResult Update(int id,bool newValue)
{
//do your saving here.
return Json(true);
}
答案 1 :(得分:1)
如果您使用的是POST,则应相应地标记您的操作
[HttpPost]
public JsonResult Action(bool newValue)
答案 2 :(得分:1)
您需要在模型中使用Id
,然后在您的视图中执行此操作:
@Html.CheckBoxFor(modelItem => item.check,
new { @dataid = item.Id, onclick = "SomeMethod(this)" });
然后像这样做你的ajax帖子:
function SomeMethod(checkboxInput) {
$.ajax({
type: 'POST',
url: 'Home/Action',
data: { newValue: $(checkboxInput).is(':checked'), id: $(checkboxInput).attr('dataid') },
success: success,
dataType: 'json'
});
}
并在你的控制器中接受它:
public JsonResult Action(bool newValue, int id)
{
// do your saving here
}