Привет. Проблема с этим подходом в том, что у вас нет сущности со строгим типом, переданной в View. В этой задаче вам нужна информация StaffMember и список всех сущностей StaffRole. PS: мне действительно не нравится подход приведения списка в представление: StaffRole []) ViewData ["AllRoles"]
Обычно я предпочитаю работать с DTO.
DTO:
public StaffMemberDto
{
public int StaffMemberId { get; set; }
public IList<StaffRoleDto> AllStaffRoles { get; set;}
public IList<StaffRoleDto> MembersRolesAttached { get; set;}
}
public StaffRoleDto
{
public int RoleId {get; set;}
public string RoleName { get; set; }
}
Контроллер:
return View(StaffMemberDto);
Таким образом, в представлении все роли строго типизированы:
foreach (var role in ViewDate.Model.AllStaffRoles)
{
...
}
И в этом посте вы можете отправить StaffMemberDto с хорошим RoleDto, уже назначенным в представлении, или вы можете выполнить трюк Request, чтобы установить флажки с идентификатором.
Что ж, в таком виде я, вероятно, буду использовать jquery для запроса addRole каждый раз, когда кто-нибудь ставит галочку для добавления роли. Это добавит в вашу форму ajax, и вы не получите постбэка.