【问题标题】:Save changes on CheckBox change?保存对 CheckBox 更改的更改?
【发布时间】:2012-11-01 13:53:59
【问题描述】:

我有一个 MVC 索引页面,它反映了数据库中的一个表。
其中一列是布尔值。
我想在索引页面中有一个复选框,当单击该复选框时,会立即调用一个操作,该操作将在现场保存新状态,而无需提交/刷新。

【问题讨论】:

    标签: asp.net-mvc checkbox submit actionlink checkboxfor


    【解决方案1】:

    您应该将onclick 事件添加到input。您的剃须刀看起来类似于:

    @Html.CheckBoxFor(m => m.Foo, new { onclick = "SomeMethod(this)" });
    

    那么您的脚本将类似于(假设您可以访问 jQuery;转换它应该很简单):

    function SomeMethod(checkboxInput) {
        $.ajax({
          type: 'POST',
          url: Your/Action,
          data: { newValue: checkboxInput.checked },
          success: success,
          dataType: 'json'
        });
    }
    

    注意参数名称:newValue

    最后是你的 Action 来处理请求:

    public JsonResult Action(bool newValue) {
       //Do your stuff!
       //repository.Update();
    }
    

    注意参数名称:newValue

    【讨论】:

    • 谢谢。由于我是 MVC 新手,请在以下方面帮助我: 1) JS sn-p 应该放在哪里? 2) 请详细说明JsonResult 中的内容 3) 没有 JS-free 的方式吗?
    • 脚本,比如SomeMethod可以去任何你想去的地方。你可以把它放在页面本身,或者像我经常做的那样,你可以把它放在一个外部文件中,然后在页面加载时加载该文件。 JsonResult 应该包含您的代码以实际执行更新或将您想要执行的内容保存到数据库中。
    • 如果你想将它包含在视图本身中,我会将脚本放在正文的末尾。您的 JsonResult 的返回类型可以是您在客户端采取适当操作所需的任何内容。现在,您可以只返回一个布尔值:return Json(true);
    • 遵循确切的步骤,无法在单击复选框状态更改时触发动作,无论如何您可以包含更大的代码部分和所需的 js 库,保存动作中的状态以进行检查/unchecked - 将其保存到 session 或 viewbag。但是从触发 json 脚本开始,它不会调用 onclick 声明的操作。
    猜你喜欢
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 2012-03-12
    相关资源
    最近更新 更多