复选框检查MVC3中的更改

时间:2013-11-20 08:39:37

标签: asp.net-mvc-3

我用MVC设计了网站。当检查更改时,我在页面中有一个复选框,运行操作并保存数据库中的更改。我从jquery-ajax使用,但没有开火。 我的观点

@model TaavonS.Models.PaginatedList<TaavonS.Models.TaavoniInfo>

<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
<div class="TableFormat">
            @Html.CheckBoxFor(modelItem => item.FlagT, new { @id=item.Scode})
</div>

  <script language="javascript" type="text/javascript">
    $(document).ready(function () {
        $("#FlagT").change(function () {
            $.ajax({

                url: '@Url.Action("EditTInfoNamayesh", "manager")',
                type: "POST",
                data: { newValue: $("#FlagT").is(':checked'), id: $("#FlagT").attr('id') }, //data,
                dataType: 'json', //type of response
                success: success
            });
        })
    })
</script>

我的控制器是:

    [HttpPost]
    public JsonResult EditTInfoNamayesh(int id,bool newValue)
    {
        var model = DBConn.TaavoniInfos.Find(id);
        model.FlagT = newValue;
        TryUpdateModel(model);
        DBConn.SaveChanges();
        return Json(true);
    }

请帮帮我 非常感谢

3 个答案:

答案 0 :(得分:0)

您是否检查过item.Scode的价值?如果item.Scode != "FlagT",你的js不会触发任何事情。这是因为当您编写$("#FlagT")时,它会查找id = "FlagT"

的元素

如果您需要动态设置id,请将class设为常数值,或依赖常量id,如下所示:

<div class="TableFormat">
            @Html.CheckBoxFor(modelItem => item.FlagT, new { @id=item.Scode, @class="FlagT"})
</div>

  <script language="javascript" type="text/javascript">
    $(document).ready(function () {
        $(".FlagT").change(function () {
            $.ajax({

                url: '@Url.Action("EditTInfoNamayesh", "manager")',
                type: "POST",
                data: { newValue: $(this).is(':checked'), id: $(this).attr('id') }, //data,
                dataType: 'json', //type of response
                success: success
            });
        })
    })
</script>

答案 1 :(得分:0)

我认为change事件将针对Dropdownlist。如果选中复选框,则需要连接到.click事件处理程序。

这是修改一下的javascript。

  $("#FlagT").click(function () {

        var isChecked = $(this).is(':checked');

        //save to database if the checkbox is checked.
        if(isChecked){

          $.ajax({

            url: '@Url.Action("EditTInfoNamayesh", "manager")',
            type: "POST",
            data: { newValue: $("#FlagT").is(':checked'), id: $("#FlagT").attr('id') }, //data,
            dataType: 'json', //type of response
            success: success
          });
        } else {
          return false;
        }
    });

试试这个。

希望这有帮助。

答案 2 :(得分:0)

1.我不应该使用'@'。

<强> 2。语言=“Javascript”已弃用。

您正在使用$('#FlagT'),在开发人员工具中验证运行时生成的ID。因为你在Html属性中使用模型名称并提到'id',所以验证DOM中生成的id是什么。

然后它应该工作。如果你仍然有传递参数的问题,只需添加

'traditional:true'

到ajax中的数据帖子。它会起作用。