C# 根据页面的不同,发布数据的方式多种多样。部分视图使用ajax调用,这似乎需要POST。同样,由于新手主义和不理解标签的全部含义,在我的故障排除过程中,删除或添加标签并查看不同的帖子结果是我的一部分。是的,添加真正进入列表的标签是我所缺少的。事后看来,这是有
C# 根据页面的不同,发布数据的方式多种多样。部分视图使用ajax调用,这似乎需要POST。同样,由于新手主义和不理解标签的全部含义,在我的故障排除过程中,删除或添加标签并查看不同的帖子结果是我的一部分。是的,添加真正进入列表的标签是我所缺少的。事后看来,这是有,c#,jquery,asp.net-mvc,model-view-controller,asp.net-mvc-5,C#,Jquery,Asp.net Mvc,Model View Controller,Asp.net Mvc 5,根据页面的不同,发布数据的方式多种多样。部分视图使用ajax调用,这似乎需要POST。同样,由于新手主义和不理解标签的全部含义,在我的故障排除过程中,删除或添加标签并查看不同的帖子结果是我的一部分。是的,添加真正进入列表的标签是我所缺少的。事后看来,这是有道理的。我知道我的答案很接近:(标记为已回答,感谢您为我的代码提供了伟大的更新示例和解释。感谢您的回答,因为它看起来与另一个答案一样有效,尽管我希望将列表构建在控制器中,然后呈现,所以我选择了另一种方法。 public class Ro
根据页面的不同,发布数据的方式多种多样。部分视图使用ajax调用,这似乎需要POST。同样,由于新手主义和不理解标签的全部含义,在我的故障排除过程中,删除或添加标签并查看不同的帖子结果是我的一部分。是的,添加真正进入列表的标签是我所缺少的。事后看来,这是有道理的。我知道我的答案很接近:(标记为已回答,感谢您为我的代码提供了伟大的更新示例和解释。感谢您的回答,因为它看起来与另一个答案一样有效,尽管我希望将列表构建在控制器中,然后呈现,所以我选择了另一种方法。
public class RoleAddRemoveListBoxViewModel
{
public List<System.Web.Mvc.SelectListItem> CurrentRoles { get; set; }
public List<System.Web.Mvc.SelectListItem> NonMemberRoles { get; set; }
}
[HttpPost]
public ActionResult ManageUserRoles(string userList)
{
List<SelectListItem> lbMemberRoles = new List<SelectListItem>();
List<SelectListItem> lbNonMemberRoles = new List<SelectListItem>();
var user = (from u in db.Users
where u.UserName == userList
select u).SingleOrDefault();
// prepopulate roles for the view dropdown
var roleList = db.Roles.OrderBy(r => r.Name).ToList().Select(rr =>
new SelectListItem { Value = rr.Name.ToString(), Text = rr.Name }).ToList();
var userRoles = UserManager.GetRoles(user.Id);
foreach (var role in roleList)
{
if (userRoles.Contains(role.Value.ToString()))
{
lbMemberRoles.Add(role);
}
else
{
lbNonMemberRoles.Add(role);
}
}
RoleAddRemoveListBoxViewModel lbvm = new RoleAddRemoveListBoxViewModel
{
CurrentRoles = lbMemberRoles,
NonMemberRoles = lbNonMemberRoles
};
return View(lbvm);
}
[HttpPost]
public ActionResult UpdateUserRoles(RoleAddRemoveListBoxViewModel model)
{
TempData["updateState"] = "User Role Updated Successfully!";
return RedirectToAction("Index");
}
@model WebDocEditor.Models.RoleAddRemoveListBoxViewModel
@{
using (Html.BeginForm("UpdateUserRoles", "Roles", FormMethod.Post))
{
<body>
<fieldset>
<form>
<div class="row">
<div class="col-xs-2">
@Html.LabelFor(model => model.CurrentRoles)
<div>
@Html.ListBoxFor(model => model.CurrentRoles, Model.CurrentRoles)
</div>
</div>
<div class="btn-group-vertical col-xs-1">
<div id="moveRightbtn" class="btn glyphicon glyphicon-arrow-right"></div>
<div id="moveLeftbtn" class="btn glyphicon glyphicon-arrow-left"></div>
</div>
<div class="col-xs-2">
@Html.LabelFor(model => model.NonMemberRoles)
<div>
@Html.ListBoxFor(model => model.NonMemberRoles, Model.NonMemberRoles)
</div>
</div>
</div>
<input type="submit" value="Save" />
</form>
</fieldset>
</body>
}
@section Scripts
{
<script type="text/javascript">
$(document).ready(function () {
$('#moveRightbtn').on('click', function () {
var selectedCurrent = $('#CurrentRoles option:selected');
$('#NonMemberRoles').append($(selectedCurrent).clone());
$(selectedCurrent).remove()
//alert(selectedCurrent);
})
$('#moveLeftbtn').on('click', function () {
var selectedNonMember = $('#NonMemberRoles option:selected');
$('#CurrentRoles').append($(selectedNonMember).clone());
$(selectedNonMember).remove()
//alert(selectedNonMember);
})
$("#submitBtn").on('click', function (e) {
$("#CurrentRoles option").prop('selected', 'selected');
$("#NonMemberRoles option").prop('selected', 'selected');
});
});
</script>
}
public class RoleAddRemoveListBoxViewModel
{
public List<System.Web.Mvc.SelectListItem> CurrentRolesList { get; set; }
public List<System.Web.Mvc.SelectListItem> NonMemberRolesList { get; set; }
public string[] CurrentRoles {get;set;}
public string[] NonMemberRoles {get;set;}
}
@using (Html.BeginForm())
{
<div class="row">
<div class="col-xs-2">
@Html.LabelFor(model => model.CurrentRoles)
<div>
@Html.ListBoxFor(model => model.CurrentRoles, Model.CurrentRolesList)
</div>
</div>
<div class="btn-group-vertical col-xs-1">
<div id="moveRightbtn" class="btn glyphicon glyphicon-arrow-right"></div>
<div id="moveLeftbtn" class="btn glyphicon glyphicon-arrow-left"></div>
</div>
<div class="col-xs-2">
@Html.LabelFor(model => model.NonMemberRoles)
<div>
@Html.ListBoxFor(model => model.NonMemberRoles, Model.NonMemberRolesList)
</div>
</div>
</div>
<input type="submit" value="Save" />
}
public ActionResult ManageUserRoles(string userList)
{
List<SelectListItem> lbMemberRoles = new List<SelectListItem>();
List<SelectListItem> lbNonMemberRoles = new List<SelectListItem>();
var user = (from u in db.Users
where u.UserName == userList
select u).SingleOrDefault();
// prepopulate roles for the view dropdown
var roleList = db.Roles.OrderBy(r => r.Name).ToList().Select(rr =>
new SelectListItem { Value = rr.Name.ToString(), Text = rr.Name }).ToList();
var userRoles = UserManager.GetRoles(user.Id);
foreach (var role in roleList)
{
if (userRoles.Contains(role.Value.ToString()))
{
lbMemberRoles.Add(role);
}
else
{
lbNonMemberRoles.Add(role);
}
}
RoleAddRemoveListBoxViewModel lbvm = new RoleAddRemoveListBoxViewModel
{
CurrentRolesList = lbMemberRoles,
NonMemberRolesList = lbNonMemberRoles
};
return View(lbvm);
}
public List<System.Web.Mvc.SelectListItem> CurrentRoles { get; set; }
public List<System.Web.Mvc.SelectListItem> NonMemberRoles { get; set; }
public string[] SelectedCurrentRoles{ get; set; }
public string[] SelectedNonMemberRoles{ get; set; }
@Html.ListBoxFor(model => model.SelectedCurrentRoles, new MultiSelectList(Model.CurrentRoles, "Value", "Text"))
@Html.ListBoxFor(model => model.SelectedNonMemberRoles, new MultiSelectList(Model.NonMemberRoles , "Value", "Text"))