Очень просто.Создайте интерфейс для редактирования содержимого, которое вы хотите, чтобы администратор редактировал, и защитите его атрибутом [Authorize]
//for the users
[Authorize]
public ActionResult NormalUsers(int newsItemId)
{
//Getting content from DB.
NewsItem news = new NewsItem(newsItemId);
return View("ShowNews", news);
}
//for editors
[Authorize(Roles = "Admin, Super User")]
[HttpGet]
public ActionResult AdministratorsOnly(int newsItemId)
{
//Getting content from DB
NewsItem news = new NewsItem(newsItemId);
return View("EditNews", news);
}
[Authorize(Roles = "Admin, Super User")]
[HttpPost]
public ActionResult AdministratorsOnly(NewsItem newsItem)
{
//Putting content in DB
newsRepository.StoreNewsItemInDB(newsItem);
NewsItem news = new NewsItem(newsItem.Id);//getting the newsItem from DB, to allow for server side processing.
return View("EditNews", news);
}
Ссылка на MSDN для подробной информации о языке.
То, как это может работать, состоит в том, что у вас есть два (фактически три) представления новостей.Первое представление предназначено для представления объекта NewsItem для обычного пользователя.
Второе представление предназначено для получения объекта NewsItem для редактирования.И третье представление предназначено для отображения объекта NewsItem после редактирования, чтобы гарантировать конечный результат редактирования.
Пользователям всегда будет представлен последний отредактированный элемент NewsItem (такой же, как 3).