Следует ли использовать наследование?
Обычно это решается ролями, а не наследованием
Не знаю конечно на сколько это правильно, но я сделал в базе юзеров доп поле ролей. Основываясь на этой инфе в коде делаешь проверку по типу 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.