我正在使用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
}
}
但我想知道是否有更好的方法来做到这一点?