SharePoint 2010: RemoveFieldRef and Inherits = «TRUE»

Я создал настраиваемый тип контента, который наследуется от типа контента OOTB SharePoint Picture . Единственное, что я сделал, - это добавление простого поля URL и удаление двух полей из базового типа. См. Ниже:


    
    
        
            
            
            
        
    

Если я создаю библиотеку изображений на основе своего настраиваемого типа содержимого, поле «URL», которое я добавил, появляется в формах создания / редактирования, однако два поля, которые я пытался удалить, также отображаются, т. Е. RemoveFieldRef игнорируется . Если я посмотрю на тип контента в «Настройки сайта -> Мы написали настраиваемый атрибут авторизации, производный от System.Web.Mvc.AuthorizeAttribute. Я успешно использую его со своих контроллеров, чтобы ограничить доступ к определенным функциям. открытый класс ...

Я написал собственный атрибут авторизации, производный от System.Web.Mvc.AuthorizeAttribute . Я успешно использую его со своих контроллеров, чтобы ограничить доступ к определенным функциям.

public class ArticleController : Controller
{
    [CustomAuthorize(Role.Administrator)]
    public ActionResult Delete(int id)
    {
       // ...
    }
}

И это прекрасно работает. Теперь я хочу отображать или скрывать элементы HTML в соответствии с той же логикой авторизации. Например, в моем представлении «Статья» я хочу скрыть кнопку действия «Удалить», если пользователь не является администратором. Я написал что-то вроде этого:


Он тоже работает нормально, но создает дублирование логики кода, потому что мне нужно указать вдвое больше необходимых полномочий для выполнения действия:

  • В контроллере, чтобы заблокировать или разрешить действие.
  • В представлении, чтобы показать или скрыть ссылку на действие.

Как лучше всего избежать этого дублирования? Есть ли способ повторно использовать мой настраиваемый атрибут авторизации из представлений?

5
задан Yann Trevin 23 February 2011 в 11:40
поделиться