예제 #1
0
        public static IActionResult OkWithPageHeader <T>(
            this ControllerBase controller,
            IPagedCollection <T> value,
            string routeName,
            PagedQueryParams queryParams,
            IUrlHelper urlHelper)
        {
            if (controller is null)
            {
                throw new ArgumentNullException(nameof(controller));
            }

            if (value is null)
            {
                throw new ArgumentNullException(nameof(value));
            }

            if (string.IsNullOrEmpty(routeName))
            {
                throw new ArgumentException("Expected non-null/empty route name", nameof(routeName));
            }

            if (queryParams is null)
            {
                throw new ArgumentNullException(nameof(queryParams));
            }

            if (urlHelper is null)
            {
                throw new ArgumentNullException(nameof(urlHelper));
            }

            controller.Response.Headers.AddPaginationHeader(value, routeName, queryParams, urlHelper);
            return(controller.Ok(value.ToList()));
        }
예제 #2
0
        /// <summary>
        /// 转换iBestRead.Results.Result为Microsoft.AspNetCore.Mvc.ActionResult
        /// </summary>
        public static ActionResult <T> ToActionResult <T>(this ControllerBase controller,
                                                          Result <T> result)
        {
            if (result.Status == ResultStatus.NotFound)
            {
                return(controller.NotFound());
            }
            if (result.Status == ResultStatus.Invalid)
            {
                foreach (var error in result.ValidationErrors)
                {
                    controller.ModelState.AddModelError(error.Identifier, error.ErrorMessage);
                }
                return(controller.BadRequest(controller.ModelState));
            }

            return(controller.Ok(result.Value));
        }