C# Can';t获取复选框以使用Html.CheckBoxFor更新MVC Razor中的模型
似乎有很多问题涉及类似的领域,但我还没有找到一个能澄清我所面临问题的问题 我正在尝试创建一个简单的任务列表,如下所示(抱歉,无法发布图像): 我无法获取更新模型的复选框(我需要单击复选框以调用相关控制器来设置模型中的更新状态) 我可能有错误的控制器签名/参数或其他 当前,如果我选中一个复选框,然后删除另一个任务,则会呈现旧复选框状态(模型尚未更新) 这是我的模型C# Can';t获取复选框以使用Html.CheckBoxFor更新MVC Razor中的模型,c#,asp.net-mvc,razor,checkboxfor,C#,Asp.net Mvc,Razor,Checkboxfor,似乎有很多问题涉及类似的领域,但我还没有找到一个能澄清我所面临问题的问题 我正在尝试创建一个简单的任务列表,如下所示(抱歉,无法发布图像): 我无法获取更新模型的复选框(我需要单击复选框以调用相关控制器来设置模型中的更新状态) 我可能有错误的控制器签名/参数或其他 当前,如果我选中一个复选框,然后删除另一个任务,则会呈现旧复选框状态(模型尚未更新) 这是我的模型 namespace TaskList.Models { public class TaskListModel {
namespace TaskList.Models
{
public class TaskListModel
{
public List<TaskItem> Tasks { get; set; }
}
public class TaskItem
{
[Key]
public int Id { get; set; }
public string Title { get; set; }
public DateTime EntryDateTime { get; set; }
public bool IsDone { get; set; }
}
}
按要求删除方法
// Delete a task
public ActionResult Delete(int id = 0)
{
if (id > 0)
{
// database logic
TaskItem taskItem = _db.Tasks.Find(id);
_db.Tasks.Remove(taskItem);
_db.SaveChanges();
}
return RedirectToAction("Index");
}
我已尝试将此javascript添加到视图中
$(function () {
$(':checkbox').change(function () {
$.ajax({
url: '@Url.Action("Edit", "Home")',
type: 'POST',
data: { id: $(this).id, isChecked: $(this).is(':checked') },
success: function (result) {
}
});
});
});
不确定是否正在调用它
仍然没有乐趣您只需在选中复选框时提交表格。感谢Joan为我指明了建设性的方向。我意识到我需要一些jQuery/Ajax来解决这个问题,并进行更多的搜索以找到解决方案 在js文件中使用了以下脚本
$(function () {
$("input[type=checkbox]").click(function () {
var data_id = $(this).data("id");
$.ajax({
url: 'Home/Edit',
type: 'POST',
data: { id: data_id, isChecked: $(this).is(':checked') },
success: function (result) {
}
});
});
});
将视图中的代码更改为:
@using (@Html.BeginForm())
{
<table>
@for (int i = 0; i < Model.Tasks.Count; i++)
{
<tr>
<td>
@Html.CheckBoxFor(m => m.Tasks[i].IsDone, new { data_id=Model.Tasks[i].Id })
</td>
<td>
@Html.EditorFor(m => m.Tasks[i].Title)
</td>
<td>
@Html.ActionLink("Delete", "Delete", new { id = Model.Tasks[i].Id })
</td>
</tr>
}
</table>
}
@使用(@Html.BeginForm())
{
@对于(int i=0;im.Tasks[i].IsDone,新{data\u id=Model.Tasks[i].id})
@EditorFor(m=>m.Tasks[i].Title)
@ActionLink(“删除”,“删除”,新{id=Model.Tasks[i].id})
}
}
请向我们提供您的“删除”方法。很抱歉看起来这么笨,但是怎么做呢?这个链接可以帮助你
$(function () {
$(':checkbox').change(function () {
$.ajax({
url: '@Url.Action("Edit", "Home")',
type: 'POST',
data: { id: $(this).id, isChecked: $(this).is(':checked') },
success: function (result) {
}
});
});
});
$(function () {
$("input[type=checkbox]").click(function () {
var data_id = $(this).data("id");
$.ajax({
url: 'Home/Edit',
type: 'POST',
data: { id: data_id, isChecked: $(this).is(':checked') },
success: function (result) {
}
});
});
});
@using (@Html.BeginForm())
{
<table>
@for (int i = 0; i < Model.Tasks.Count; i++)
{
<tr>
<td>
@Html.CheckBoxFor(m => m.Tasks[i].IsDone, new { data_id=Model.Tasks[i].Id })
</td>
<td>
@Html.EditorFor(m => m.Tasks[i].Title)
</td>
<td>
@Html.ActionLink("Delete", "Delete", new { id = Model.Tasks[i].Id })
</td>
</tr>
}
</table>
}