我想直接从包含复选框的网格更新数据库

时间:2010-08-06 14:26:12

标签: asp.net-mvc-2

我是MVC的新手,我想知道如何做以下事情; 使用foreach循环和用户控件我很高兴地显示数据库中的用户列表。 此页面是管理页面,并显示每个用户的关联权限。我想更改此设置,以便在每个角色的每个标题下都有一个复选框,用于确定是否将该角色分配给该人员。 当管理员单击复选框时,该用户的角色会相应更改。理想情况下,更新应立即在数据库中进行。

在MVC2中执行此操作的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

如果您打算通过切换复选框来更改和触发值,请考虑以下建议。

使用jQuery为每个复选框附加事件。让它对控制器中的URL进行AJAX调用。只要切换,该事件就会触发,并运行此代码:

$.ajax({
//this could also be built with '<%= Url.Action("UpdateUserRole","User") %>/
url: "/User/UpdateUserRole", 
type: "POST",
data: {
       "userID" :  "", //somehow place the user's ID here - cookie, session, etc.
       "roleID" : $('#theCheckbox').val(),
      },
success: function(data) { alert(data); }
});

制作新的控制器动作方法。也许它看起来像:

public string UpdateUserRole(int userID, int roleID){
    //go update the DB with the 2 params as needed.
}

在其中,您可以调用数据库以删除/添加角色给用户,具体取决于当前是否存在。您是否需要布尔值来指示启用/禁用,这取决于您,但这会使您的视图复杂化。我的建议是让动作简单地“翻转”数据库中的状态。如果存在用户/角色配对,请将其删除。如果没有,请创建它。

确保该控制器方法的安全性。您可能不希望任何人检测该方案的工作方式。也许在您的表单中包含Html.AntiForgeryToken,并在您的控制器方法中要求它。