Не знаю конечно на сколько это правильно, но я сделал в базе юзеров доп поле ролей. Основываясь на этой инфе в коде делаешь проверку по типу
if (Session[Role] == "READ") {
...
}
Можно в App_Data сделать такую функцию
public static bool AuthorizedToEdit()
{
bool check = false;
if (HttpContext.Current.Session["ROLE"].ToString() == "WRITE")
{
check = true;
}
else
check = false;
return check;
}
После чего отключай, включай, делай видимым - невидимым:
btnDelete.Visible = Utilities.AuthorizedToEdit();
Не думаю конечно, что в MVC сильно отличается. Но возможно... Мой пример из Webforms.