首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >正确使用bootstrap开关调用c#函数(T4MVC/实体框架)

正确使用bootstrap开关调用c#函数(T4MVC/实体框架)
EN

Stack Overflow用户
提问于 2015-11-12 12:32:49
回答 1查看 469关注 0票数 0

没有代码我找不到可以解释的词,所以到目前为止我得到的是:

视图:(引导开关)

代码语言:javascript
运行
复制
[...]
    @foreach (var item in Model)
                {
                    <tr>
                        <td>
                            <input class="my-checkbox" type="checkbox" name="my-checkbox" id="@(item.Id)" data-handle-width="100" data-on-text="Activer" data-off-text="Désactiver" data-size="small" data-on-color="success">
                        </td>
                    </tr>
                }
[...]
    <script type="text/javascript">
        var isEnableUrl = '@Url.Action("IsEnabledMaterial", "MaterialType")';
        $("[name='my-checkbox']").bootstrapSwitch();
    </script>

Javascript:

代码语言:javascript
运行
复制
$(document).ready(function () {
    $('.my-checkbox').each(function (index) {
        $.ajax({
            type: 'POST',
            url: isEnableUrl,
            data: { 'id': index },
            success: function (result) {
                $('.my-checkbox').prop('checked', result);
            },
            error: function (e) {
                swal("Error", "Can't modify that element. ", "error");
            }
        });
    });
});

然后我的控制器:

代码语言:javascript
运行
复制
[HttpPost]
public virtual bool IsEnabledMaterial(int id)
{
     var materialType = materialTypeRepository.GetById(id);
     return materialType.Enable;
}

所以基本上,我尝试做的是在页面的加载上,当我所有的“开关”被创建后,我想去我的数据库中查找,看看哪个开关必须是真的还是假的,并将它们设置为正确的值…

但是当我尝试这样做的时候,当id =0时,我得到了一个NullReferenceException。我想这是正常的,因为在我的数据库中,id是1,2,3和4。但是如果我将id递增1,当id=4时,我会得到相同的错误。在每种情况下,它们都不会切换到真(它们在数据库中都是真的)。它将只工作(对于id 1-2-3)如果我手动(没有.each),id: 0-4仍然不能做我想要的事情。

会不会是和森林在一起?‘因为我尝试传递id "@(item.Id + 1)“,但一次仍然得到0...

非常感谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2015-11-12 12:51:15

我认为至少有三个问题:

  1. 你的id以数字开头的输入。从技术上讲,id不应该以数字开头。尝试将其更改为

<input class="my-checkbox" type="checkbox" name="my-checkbox" id="@("chkBox" + item.Id)" data-handle-width="100" data-on-text="Activer" data-off-text="Désactiver" data-size="small" data-on-color="success">

  1. 您的主要问题应该是

$('.my-checkbox').prop('checked', result);

这会将所有带有class="my-checkbox“的输入更改为ajax调用的最后结果。您可能希望将其更改为

代码语言:javascript
运行
复制
$('#chkBox' + index).prop('checked', result);

由于此implementation中的ajax调用太多,因此您将遇到性能问题

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33664499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档