隐藏基于用户角色的按钮jQuery - MVC C#

时间:2016-02-13 11:04:47

标签: javascript jquery asp.net-mvc

我正在使用jQuery动态创建按钮,这是创建按钮的代码HTML

    var createButtons = function (buttonsObject) {
        var buttons = buttonsObject;
        var htmlButtons = [];

        $.each(buttons, function (name, props) {
            var css = "";
            if (!props.enabled) {
                css = " hidden";
            }
            var tempBtn = $("<button/>", {
                text: props.Text,
                id: "btn_" + props.Text,
                "class": props.css + " pull-left" + css,
                click: props.click
            }).attr({ "style": "margin-right: 5px;" });

            htmlButtons.push(tempBtn);

        });
        return htmlButtons;
    };

然后我可以传递这样的按钮:

        buttons: {
            dlt: {
                Text: "Delete",
                css: "btn btn-danger",
                enabled: true,
                click: function () {
                    // Do something
                }
            },
            update: {
                Text: "Update",
                css: "btn btn-primary",
                enabled: true,
                click: function () {
                  // Do something
                }
            },
            create: {
                Text: "Create",
                css: "btn btn-success",
                enabled: true,
                click: function () {
                  //Do something
                }
            }

        }

现在我添加了一个已启用的属性&#39;,它将决定是否应显示该按钮。

一切都按预期工作。

现在,如果用户没有执行操作的权限,则必须隐藏该按钮。

用户角色保存在用户会话中,可以使用Razor C#在View中访问:

@{
  var createSIMPackage = SessionHandler.UserSession.UserFeatures.Contains("Create SIM Package");
}

createSIMPackage为FALSE时,该按钮应隐藏,并且createSIMPackage为TRUE时应显示该按钮。

我想将createSIMPackage的值放在隐藏字段中,但随着应用程序大小的增加,它不会成为好习惯。

这样的事情:

<input type="text" value="@createSIMPackage" id="createSIMPackage" />

然后JS:

create: {
Text: "Create",
css: "btn btn-success",
enabled: $('#creatSimPackage').val(),
click: function () {
   //Do something
}
}

但我想知道是否有更好的方法来做到这一点?

0 个答案:

没有答案