在下面的脚本中,我调用了一种用于管理用户权限的操作方法。第一次,一切正常,但是当我调试控制器时,变量grp
的值为usr
。
我的查看代码
<body>
<div class="container">
<br />
<table class="table table-responsive table-bordered">
@{
int count = 1;
//inizialize my ef context
dev_labelsEntities db = new dev_labelsEntities();
//get all users stored in the db
var users = from u in db.Users
orderby u.username
select new
{
u.username
};
//get all groups from the db
var groups = from g in db.Groups
orderby g.group_name
select new
{
g.group_name
};
<tr>
<th>Username</th>
@foreach (var item in groups)
{
<td>@Html.DisplayFor(model => item.group_name)</td>
}
</tr>
foreach (var item in users)
{
<tr>
<td>@Html.DisplayFor(model => item.username)</td>
@foreach (var itemG in groups)
{
//in the input tag i define the values which i want to get
<td><input type="checkbox" class="chkclass"
username="@item.username" groupname="@itemG.group_name"
id="@count" />
count++;
</td>
}
</tr>
}
}
</table>
</div>
</body>
这是我的JQuery
$(document).ready(function() {
$('.chkclass').click(function() {
var getchkid = $(this).attr('id');
var isChecked = $('#' + getchkid).is(':checked');
if ($('#' + getchkid).is(':checked') == true) {
// to be send to your call
var username = $(this).attr('username');
var groupname = $(this).attr('groupname');
//here put your call ajax to your action
$.ajax({
type: 'Post',
url: '/UserGroups/ManagePermission',
dataType: 'json',
data: {
'usr': username,
'grp': groupname
},
success: function(data) {},
error: function(xhr, ajaxOptions, thrownError) {
alert(thrownError);
}
})
}
});
});
控制器中的代码仅用于测试一切正常。
有人知道我为什么要这么做吗?
编辑
编辑2
这里是从客户端发送的值
答案 0 :(得分:3)
可能有用的事物。
我认为创建对象来捕获这样的字段是一种很好的做法:
public class ManagePermissionsRequest {
public string usr { get; set; }
public string gpr { get; set; }
}
然后在控制器中向请求添加[FromBody]:
[HttpPost]
public ActionResult ManagePermissions([FromBody]permissionsRequest) {
// Your code
}
我认为可以解决问题。有时,尽管我需要对JQuery中的数据进行字符串化处理,但如果仍然无法使用,那值得尝试:
$.ajax({
type: 'Post',
url: '/UserGroups/ManagePermission',
dataType:'json',
data: JSON.stringify({
'usr': username,
'grp': groupname
}),
success: function (data) {
},
error: function (xhr, ajaxOptions, thrownError) {
alert(thrownError);
}
})
注意:避免缩写变量的良好做法。我可能会使用“用户”或“用户名”,而不是usr