【问题标题】:How to post immediately on checkbox checked/unchecked如何在选中/未选中复选框上立即发布
【发布时间】:2013-11-19 17:25:32
【问题描述】:

我有一个显示在页面上的 ToDoItems 列表:

@model ToDo4.ViewModels.IndexViewModel  
@foreach (var item in Model.Items)  
{  
    <tr>  
        <td> @Html.DisplayFor(modelItem => item.Content) </td>  
        <td> @Html.DisplayFor(modelItem => item.Status) </td>  
    </tr>  
}  

IndexViewModel 包含:
List&lt;ToDoItem&gt; Items

我想在选中或取消选中复选框时立即更改显示的内容(对 ToDoItem.Status 进行过滤)。
1) 如何处理已选中/未选中的事件并返回控制器?
2)我怀疑我应该把列表放在局部视图中;处理选中/未选中事件的任何内容都只会刷新部分视图。
任何见解都表示赞赏...

【问题讨论】:

  • 我想知道您是否尝试做一个小 ajax 并在动作中检测到​​ AjaxRequest,然后根据需要返回答案。

标签: asp.net-mvc-4


【解决方案1】:

使用 jquery ajax 回调控制器来更改数据库中的记录。像这样的

$.ajax({
    url: "@Url.Action("Action", "Controller")",
    type: "POST",
    cache: false,
    async: true,
    data: {
        id: 'clicked id'
    },
    contentType: 'application/json',
    dataType: 'json',
    success: function(result){
        var tr = //clicked row
        tr.remove();
    }
});

Getting the id of a table row when a checkbox is checked 这有关于如何获取单击行的 id 的代码,您应该能够将同一行与 tr.remove 一起使用。 tr.remove 将从表中删除表行。您提到需要更改列表,但希望删除将完成您所需要的。

【讨论】:

  • 很有趣,但我想在复选框选中/取消选中时发回控制器。这样,控制器将拥有模型中复选框的状态,并可以根据复选框的状态生成一个新列表。该列表(在 foreach 循环中)处于部分视图中,因此只有页面的该部分会被更新。
  • 在这里查看我的答案stackoverflow.com/questions/20071301/…,了解如何使用 ajax 调用来获取新的局部视图
  • @MB:谢谢,我越来越接近解决这个问题了,但我在 url: member 上遇到了一些语法错误。
  • 像我的例子一样使用 url.action,只需用你的名字替换动作和控制器。
  • 谢谢,马特,非常有帮助。得到它的工作,虽然获得复选框的'checked'值有点神秘:`data:{isChecked:($(this).is(“:checked”)),
猜你喜欢
  • 1970-01-01
  • 2012-07-24
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多