Beispiel #1
0
 private static void SetExceptionResult(
     ExceptionContext context,
     Exception exception,
     HttpStatusCode code)
 {
     context.Result = IncodingResult.Error(null, code);
 }
Beispiel #2
0
        public virtual async Task <ActionResult> Render()
        {
            var parameter = dispatcher.Query(new GetMvdParameterQuery()
            {
                Params = ControllerContext.GetNameValueCollection()
            });
            object model = null;

            if (!string.IsNullOrWhiteSpace(parameter.Type))
            {
                var instance = await new CreateMessageByType2()
                {
                    Type       = parameter.Type,
                    Controller = this,
                    IsModel    = parameter.IsModel
                }.Execute();

                if (parameter.IsValidate && !ModelState.IsValid)
                {
                    return(IncodingResult.Error(ModelState));
                }

                model = parameter.IsModel ? instance : await dispatcher.QueryAsync(new MVDExecuteAsync { Instance = new CommandComposite((IMessage)instance) });
            }

            ModelState.Clear();

            var isAjaxRequest = HttpContext.Request.IsAjaxRequest();

            return(isAjaxRequest
                           ? await IncPartialView(parameter.View, model)
                           : (ActionResult)Content(await RenderToString(parameter.View, model)));
        }
Beispiel #3
0
        public virtual async Task <ActionResult> Push()
        {
            var parameter = dispatcher.Query(new GetMvdParameterQuery()
            {
                Params = ControllerContext.GetNameValueCollection()
            });

            var commands = await new CreateMessageByType2.AsCommands
            {
                Provider    = _serviceProvider,
                IncTypes    = parameter.Type,
                Controller  = this,
                IsComposite = parameter.IsCompositeArray
            }.Execute();

            var composite = new CommandComposite(commands);

            return(await TryPushAsync(async commandComposite => await dispatcher.QueryAsync(new MVDExecuteAsync()
            {
                Instance = composite
            }), composite, setting => setting.SuccessResult = () =>
            {
                var data = commands.Length == 1 ? commands[0].Result : commands.Select(r => r.Result);
                return IncodingResult.Success(data);
            }));
        }
Beispiel #4
0
        public virtual async Task <ActionResult> Validate()
        {
            var parameter = dispatcher.Query(new GetMvdParameterQuery()
            {
                Params = ControllerContext.GetNameValueCollection()
            });
            // ReSharper disable once UnusedVariable
            var instance = await new CreateMessageByType2()
            {
                Type       = parameter.Type,
                Controller = this
            }.Execute();

            return(ModelState.IsValid ? IncodingResult.Success() : IncodingResult.Error(ModelState));
        }
        protected async Task <ActionResult> TryPushAsync(Func <CommandComposite, Task> push, CommandComposite composite, Action <IncTryPushSetting> action = null, bool?isAjax = null)
        {
            var setting = new IncTryPushSetting();

            action.Do(r => r(setting));

            Func <ActionResult> defaultSuccess = () => View(composite.Parts[0]);
            var isActualAjax = isAjax.GetValueOrDefault(HttpContext.Request.IsAjaxRequest());

            if (isActualAjax)
            {
                defaultSuccess = () => IncodingResult.Success();
            }
            var success = setting.SuccessResult ?? defaultSuccess;

            Func <IncWebException, ActionResult> defaultError = (ex) => View(composite.Parts[0]);

            if (isActualAjax)
            {
                defaultError = (ex) => IncodingResult.Error((ModelStateDictionary)ModelState);
            }
            var error = setting.ErrorResult ?? defaultError;

            if (!ModelState.IsValid)
            {
                return(error(IncWebException.For(string.Empty, string.Empty)));
            }

            try
            {
                await push(composite);

                return(success());
            }
            catch (IncWebException exception)
            {
                foreach (var pairError in exception.Errors)
                {
                    foreach (var errorMessage in pairError.Value)
                    {
                        ModelState.AddModelError(pairError.Key, errorMessage);
                    }
                }

                return(error(exception));
            }
        }
Beispiel #6
0
        public virtual async Task <ActionResult> Query()
        {
            var parameter = dispatcher.Query(new GetMvdParameterQuery()
            {
                Params = ControllerContext.GetNameValueCollection()
            });
            var query = await new CreateMessageByType2()
            {
                Type = parameter.Type, Controller = this
            }.Execute();

            if (parameter.IsValidate && !ModelState.IsValid)
            {
                return(IncodingResult.Error(ModelState));
            }

            var composite = new CommandComposite((IMessage)query);

            return(await TryPushAsync(async commandComposite => await dispatcher.QueryAsync(new MVDExecuteAsync()
            {
                Instance = composite
            }), composite, setting => setting.SuccessResult = () => IncodingResult.Success(composite.Parts[0].Result), isAjax : true));
        }
 public IIncodingMetaLanguageEventBuilderDsl Direct(object result)
 {
     return(Direct(IncodingResult.Success(result)));
 }
 public IIncodingMetaLanguageEventBuilderDsl Direct(IncodingResult result)
 {
     return(AddAction(new ExecutableDirectAction(result.Data.ToJsonString())));
 }
 protected async Task <IncodingResult> IncPartialView([AspMvcView] string viewName, object model = null)
 {
     return(IncodingResult.Success(await RenderToString(viewName, model)));
 }
 protected IncodingResult IncJson(object model)
 {
     return(IncodingResult.Success(model));
 }
 protected IncodingResult IncRedirectToAction([AspMvcAction] string action, [AspMvcController] string controller, object routes)
 {
     return(IncodingResult.RedirectTo(Url.Action(action, controller, routes)));
 }
 protected IncodingResult IncRedirect(string url)
 {
     return(IncodingResult.RedirectTo(url));
 }