Beispiel #1
0
        public static Task <IViewComponentResult> GetAsync(string resName)
        {
            var commMsg = $"<!-- {resName} not found ! -->";
            IViewComponentResult empty = new HtmlContentViewComponentResult(new HtmlString(commMsg));

            return(Task.FromResult <IViewComponentResult>(empty));
        }
Beispiel #2
0
        public IViewComponentResult Invoke()
        {
            IHtmlContent content = new HtmlString("<b>Component2 (HtmlContentViewComponentResult)</b>");
            HtmlContentViewComponentResult result = new HtmlContentViewComponentResult(content);

            // HtmlContentViewComponentResult - класс, для указания фрагмента разметки
            // Для данного типа результата не предусмотрен метод в базовом классе
            // Результат не будет кодироваться
            // Если метод Invoke возвращает IHtmlContent будет использоваться тип результата HtmlContentViewComponentResult
            return(result);
        }
Beispiel #3
0
        public void Execute_WritesData_PreEncoded()
        {
            // Arrange
            var buffer = new MemoryStream();
            var viewComponentContext = GetViewComponentContext(Mock.Of <IView>(), buffer);

            var result = new HtmlContentViewComponentResult(new HtmlString("<Test />"));

            // Act
            result.Execute(viewComponentContext);
            buffer.Position = 0;

            // Assert
            Assert.Equal("<Test />", new StreamReader(buffer).ReadToEnd());
        }
Beispiel #4
0
        private async Task <IViewComponentResult> ResolveEmbedded(IScreenMetaData model,
                                                                  object routeValues = null)
        {
            var currentRequestQueryString = Request.Query.ToExpandoObject();

            return(await WhenInsideStepData());


            async Task <IViewComponentResult> WhenInsideStepData()
            {
                IViewComponentResult result;

                if (string.IsNullOrEmpty(model.ContainedFlowType))
                {
                    result = new HtmlContentViewComponentResult(new StringHtmlContent(string.Empty));
                }
                else if (string.IsNullOrEmpty(model.ContainedFlowHandler))
                {
                    throw new ApplicationException($"property {nameof(IScreenMetaData.ContainedFlowHandler)} should contain a value when there is a contained flow");
                }
                else
                {
                    var stepViewCustomizations = new
                    { ContainerModelProperty_FlowHandler = model.ContainedFlowHandler }
                    .MergeObjects(currentRequestQueryString).ToExpandoObject();

                    result = await _currentViewResolver.Execute(new CurrentViewRequest <IViewComponentResult>
                    {
                        FlowHandler = model.ContainedFlowHandler,

                        BuildResultOnFlowNotFound = () =>
                                                    Task.FromResult <IViewComponentResult>(
                            new HtmlContentViewComponentResult(new StringHtmlContent("Not authorized"))),
                        ViewParameters  = stepViewCustomizations,
                        OnAddModelError = (memberName, errorMessage) => ModelState.AddModelError(memberName, errorMessage),
                        OnBuildView     = (bvi =>
                        {
                            var viewPath = $"{bvi.FlowType}/Views/{bvi.ViewName}";
                            return(Task.FromResult <IViewComponentResult>(View(viewPath, bvi.ScreenModel)));
                        }),
                        ResolveAsComponentOnly = true
                    });
                }

                return(result);
            }
        }