I'm having a view to use update roles for user and I want to pass a list of values of roles in my for loop from View to RoleViewModels in my Controller. How can I do it ?
UserViewModels:
public class UserViewModels
{
// ...
[DisplayName("Role")]
public List<RoleViewModels> ListRoles { get; set; }
}
Controller:
[HttpPost]
public ActionResult Edit(UserViewModels userViewModels)
{
return View(userViewModels);
}
my view:
@for (int i = 0; i < Model.ListRoles.Count(); i++)
{
<label style="display:block">
@Html.CheckBoxFor(model => model.ListRoles[i].Selected)
@Html.HiddenFor(model => model.ListRoles[i].Id)
@Html.LabelFor(model => model.ListRoles[i].RoleName, Model.ListRoles[i].RoleName)
</label>
}
ajax script:
<script>
$(document).ready(function () {
$("#btnUpdate").click(function (e) {
e.preventDefault();
var data = {
Id: $("#Id").val(),
UserName: $("#UserName").val(),
Active: $("#Active:checked").val(),
// ListRoles: **get values here ???**
};
$.ajax({
type: "POST",
url: "@Url.Action("Edit", "User")",
data: data,
dataType: 'json',
success: function (result) {
alert('Update successful !');
},
});
});
})
</script>
formand then just use jquery.serialize()? It's cleaner