Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';t获取复选框以使用Html.CheckBoxFor更新MVC Razor中的模型_C#_Asp.net Mvc_Razor_Checkboxfor - Fatal编程技术网

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