Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 2 我想直接从包含复选框的网格中更新数据库_Asp.net Mvc 2 - Fatal编程技术网

Asp.net mvc 2 我想直接从包含复选框的网格中更新数据库

Asp.net mvc 2 我想直接从包含复选框的网格中更新数据库,asp.net-mvc-2,Asp.net Mvc 2,我是MVC的新手,我想知道如何做到以下几点:; 使用foreach循环和用户控件,我很高兴地显示了数据库中的用户列表。 此页面是管理员页面,显示每个用户的相关权限。我想对此进行更改,以便在每个角色的每个标题下都有一个复选框,用于确定该角色是否分配给该人员。 当管理员单击复选框时,该用户的角色将相应地更改。理想情况下,更新应该直接在数据库上进行 在MVC2中实现这一点的最佳方法是什么 > P>如果您的意图是改变值并由复选框的触发器触发,请考虑这些建议。 使用jQuery为每个复选框附加一个事件。让

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


在MVC2中实现这一点的最佳方法是什么

> P>如果您的意图是改变值并由复选框的触发器触发,请考虑这些建议。

使用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); }
});
在中,您可以调用数据库来删除/向用户添加角色,具体取决于该角色当前是否存在。这取决于您是否希望布尔值指示启用/禁用,但这会使视图复杂化。我的建议是将该操作简单地“翻转”数据库中的状态。如果存在用户/角色配对,请将其删除。如果没有,就创建它


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

我通过使用Html.EditorFor帮助程序取得了一些进展。这会自动将布尔值转换为我想要的复选框。但是,单击复选框不会立即更新数据库。我需要连接一个事件,也许是客户端?我已经加入了一个点击事件和一个AJAX帖子。我只需要更新的用户ID。但是我认为这里的代码有一个错误;函数TestClickFunc(userId){//alert(userId);$.ajax({url://Users/UpdateEmailDistributionListFlag],键入:“POST”,数据:{“userId”:userId},成功:函数(data){alert(data);}});}这无法在UsersController中调用以下方法;public void UpdateEmailDistributionListFlag(int userId){//db update}@arame3333:请参阅更新以使用Url.Action将Url构建到控制器
public string UpdateUserRole(int userID, int roleID){
    //go update the DB with the 2 params as needed.
}