예제 #1
0
        public void GetAttribute_ThrowsArgumentNull_Action()
        {
            // Arrange & Act & Assert
            ActionModel action = null;

            ExceptionAssert.ThrowsArgumentNull(() => action.GetAttribute <int>(), "action");
        }
예제 #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="context"></param>
        public virtual bool AppliesToAction(ODataControllerActionContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            ActionModel         action    = context.Action;
            ODataRouteAttribute routeAttr = action.GetAttribute <ODataRouteAttribute>();

            if (routeAttr == null)
            {
                return(false);
            }
            string    prefix = context.Prefix;
            IEdmModel model  = context.Model;

            string routeTemplate = "";
            ODataRoutePrefixAttribute prefixAttr = action.Controller.GetAttribute <ODataRoutePrefixAttribute>();

            if (prefixAttr != null)
            {
                routeTemplate = prefixAttr.Prefix + "/";
            }
            routeTemplate += routeAttr.PathTemplate;

            SelectorModel selectorModel = action.Selectors.FirstOrDefault(s => s.AttributeRouteModel == null);

            if (selectorModel == null)
            {
                selectorModel = new SelectorModel();
                action.Selectors.Add(selectorModel);
            }

            string templateStr = string.IsNullOrEmpty(prefix) ? routeTemplate : $"{prefix}/{routeTemplate}";

            selectorModel.AttributeRouteModel = new AttributeRouteModel(new RouteAttribute(templateStr)
            {
                Name = templateStr
            });
            selectorModel.EndpointMetadata.Add(new ODataEndpointMetadata(prefix, model, templateStr));

            return(true);
        }