public void WithViewContextWithoutValidationSummaryMessageElementShouldSetItToAccessor() { var mvcOptions = new MvcViewOptions() { HtmlHelperOptions = new HtmlHelperOptions() }; mvcOptions.HtmlHelperOptions.ValidationSummaryMessageElement = "Test"; MyApplication .StartsFrom <DefaultStartup>() .WithServices(services => { services.AddSingleton(mvcOptions); services.AddSingleton <IActionContextAccessor, ActionContextAccessor>(); }); MyViewComponent <AccessorComponent> .Instance() .WithViewContext(viewContext => { viewContext.ValidationSummaryMessageElement = null; }) .ShouldPassForThe <AccessorComponent>(viewComponent => { Assert.NotNull(viewComponent.ViewContext.ValidationSummaryMessageElement); Assert.True(viewComponent.ViewContext.ValidationSummaryMessageElement == "Test"); }); MyApplication.StartsFrom <DefaultStartup>(); }
public PageActionInvoker( DiagnosticListener diagnosticSource, ILogger logger, IPageFactory factory, IPageModelFactory modelFactory, IPageHandlerMethodSelector selector, IModelMetadataProvider metadataProvider, ITempDataDictionaryFactory tempDataFactory, IOptions <MvcViewOptions> viewOptions, IFilterMetadata[] filters, IReadOnlyList <IValueProviderFactory> valueProviderFactories, ActionContext actionContext, CompiledPageActionDescriptor actionDescriptor, TempDataPropertyProvider tempDataPropertyProvider) { _diagnosticSource = diagnosticSource; _logger = logger; _factory = factory; _modelFactory = modelFactory; _selector = selector; _metadataProvider = metadataProvider; _tempDataFactory = tempDataFactory; _viewOptions = viewOptions.Value; _filters = filters; _valueProviderFactories = new CopyOnWriteList <IValueProviderFactory>(valueProviderFactories); _actionContext = actionContext; _actionDescriptor = actionDescriptor; _tempDataPropertyProvider = tempDataPropertyProvider; _cursor = new FilterCursor(_filters); }
public PageActionInvokerProvider( PageLoader pageLoader, PageActionInvokerCache pageActionInvokerCache, IModelMetadataProvider modelMetadataProvider, ITempDataDictionaryFactory tempDataFactory, IOptions <MvcOptions> mvcOptions, IOptions <MvcViewOptions> mvcViewOptions, IPageHandlerMethodSelector selector, DiagnosticListener diagnosticListener, ILoggerFactory loggerFactory, IActionResultTypeMapper mapper, IActionContextAccessor?actionContextAccessor = null) { _pageLoader = pageLoader; _pageActionInvokerCache = pageActionInvokerCache; _valueProviderFactories = mvcOptions.Value.ValueProviderFactories.ToArray(); _modelMetadataProvider = modelMetadataProvider; _tempDataFactory = tempDataFactory; _mvcViewOptions = mvcViewOptions.Value; _selector = selector; _diagnosticListener = diagnosticListener; _logger = loggerFactory.CreateLogger <PageActionInvoker>(); _mapper = mapper; _actionContextAccessor = actionContextAccessor ?? ActionContextAccessor.Null; }
public RazorViewRenderService(IActionContextAccessor actionContextAccessor, IHttpContextAccessor httpContextAccessor, ICompositeViewEngine viewEngine, IServiceProvider serviceProvider, IOptions <MvcViewOptions> viewOptions) { _actionContextAccessor = actionContextAccessor ?? throw new ArgumentNullException(nameof(actionContextAccessor)); _httpContextAccessor = httpContextAccessor ?? throw new ArgumentNullException(nameof(httpContextAccessor)); _viewEngine = viewEngine ?? throw new ArgumentNullException(nameof(viewEngine)); _serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider)); _viewOptions = viewOptions?.Value ?? throw new ArgumentNullException(nameof(viewOptions)); }
public void DefaultValue_ConfiguresOptions() { var configure = new MvcServiceOptions(); var options = new MvcViewOptions(); configure.Views(options); Assert.False(options.HtmlHelperOptions.ClientValidationEnabled); }
public static IHtmlGenerator GetHtmlGenerator(IModelMetadataProvider provider) { var options = new MvcViewOptions(); var urlHelperFactory = new Mock <IUrlHelperFactory>(); urlHelperFactory .Setup(f => f.GetUrlHelper(It.IsAny <ActionContext>())) .Returns(Mock.Of <IUrlHelper>()); return(GetHtmlGenerator(provider, urlHelperFactory.Object, options)); }
public ViewRenderService( IModelMetadataProvider modelMetadataProvider, ICompositeViewEngine viewEngine, IHttpContextAccessor httpContextAccessor, ITempDataProvider tempDataProvider, IServiceProvider serviceProvider, IOptions <MvcViewOptions> viewOptions) { _modelMetadataProvider = modelMetadataProvider; _viewEngine = viewEngine; _httpContextAccessor = httpContextAccessor; _tempDataProvider = tempDataProvider; _serviceProvider = serviceProvider; ViewOptions = viewOptions.Value; }
private static ValidationHtmlAttributeProvider GetAttributeProvider(IModelMetadataProvider metadataProvider) { // Add validation properties for float, double and decimal properties. Ignore everything else. var mvcViewOptions = new MvcViewOptions(); mvcViewOptions.ClientModelValidatorProviders.Add(new NumericClientModelValidatorProvider()); var mvcViewOptionsAccessor = new Mock <IOptions <MvcViewOptions> >(); mvcViewOptionsAccessor.SetupGet(accessor => accessor.Value).Returns(mvcViewOptions); return(new DefaultValidationHtmlAttributeProvider( mvcViewOptionsAccessor.Object, metadataProvider, new ClientValidatorCache())); }
public async Task RenderPartialViewToString_should_successfully_render_view_into_string() { // Arrange. string data = "this is the data"; string partialViewPath = "temp/view/myview"; // Http context Mock <HttpContext> mockContext = new Mock <HttpContext>(); Mock <IFeatureCollection> mockFeaturesColl = new Mock <IFeatureCollection>(); Mock <IRoutingFeature> mockRoutingFeature = new Mock <IRoutingFeature>(); Mock <RouteData> mockRoutData = new Mock <RouteData>(); mockRoutingFeature.Setup(m => m.RouteData).Returns(mockRoutData.Object); mockFeaturesColl.Setup(m => m.Get <IRoutingFeature>()).Returns(mockRoutingFeature.Object); mockContext.Setup(m => m.Features).Returns(mockFeaturesColl.Object); mockHttpContextAccessor.Setup(m => m.HttpContext).Returns(mockContext.Object); // Razor view engine mocks Mock <IViewEngine> mockEngine = new Mock <IViewEngine>(); Mock <IView> mockView = new Mock <IView>(); mockRazorViewEngine.Setup(m => m.FindView(It.IsAny <ActionContext>(), It.IsAny <string>(), It.IsAny <bool>())).Returns(ViewEngineResult.Found(partialViewPath, mockView.Object)); IViewRenderer renderer = new ViewRenderer(mockViewOptions.Object, mockRazorViewEngine.Object, mockTempDataProvider.Object, mockHttpContextAccessor.Object); // IOptions Mock <MvcViewOptions> mockMvcOptions = new Mock <MvcViewOptions>(); MvcViewOptions opt = new MvcViewOptions(); opt.HtmlHelperOptions = new HtmlHelperOptions(); //mockMvcOptions.Setup(m => m.HtmlHelperOptions).Returns(new HtmlHelperOptions()); mockViewOptions.Setup(m => m.Value).Returns(opt); // Act. string htmlString = await renderer.RenderPartialViewToString(data, partialViewPath); // Assert. // since we are not passing in any view ... the result html string should be empty. Assert.IsEmpty(htmlString); }
public PageActionInvokerProvider( PageLoader loader, IPageFactoryProvider pageFactoryProvider, IPageModelFactoryProvider modelFactoryProvider, IRazorPageFactoryProvider razorPageFactoryProvider, IActionDescriptorCollectionProvider collectionProvider, IEnumerable <IFilterProvider> filterProviders, ParameterBinder parameterBinder, IModelMetadataProvider modelMetadataProvider, IModelBinderFactory modelBinderFactory, ITempDataDictionaryFactory tempDataFactory, IOptions <MvcOptions> mvcOptions, IOptions <MvcViewOptions> mvcViewOptions, IPageHandlerMethodSelector selector, DiagnosticListener diagnosticListener, ILoggerFactory loggerFactory, IActionResultTypeMapper mapper, IActionContextAccessor actionContextAccessor) { _loader = loader; _pageFactoryProvider = pageFactoryProvider; _modelFactoryProvider = modelFactoryProvider; _modelBinderFactory = modelBinderFactory; _razorPageFactoryProvider = razorPageFactoryProvider; _collectionProvider = collectionProvider; _filterProviders = filterProviders.ToArray(); _valueProviderFactories = mvcOptions.Value.ValueProviderFactories.ToArray(); _parameterBinder = parameterBinder; _modelMetadataProvider = modelMetadataProvider; _tempDataFactory = tempDataFactory; _mvcOptions = mvcOptions.Value; _mvcViewOptions = mvcViewOptions.Value; _selector = selector; _diagnosticListener = diagnosticListener; _logger = loggerFactory.CreateLogger <PageActionInvoker>(); _mapper = mapper; _actionContextAccessor = actionContextAccessor ?? ActionContextAccessor.Null; }
public AbpIdNameTagHelper(IOptions <MvcViewOptions> mvcViewOptions) { _mvcViewOptions = mvcViewOptions.Value; }
public static IReadOnlyList <LifecycleProperty> GetTempDataProperties(Type type, MvcViewOptions viewOptions) { List <LifecycleProperty> results = null; var propertyHelpers = PropertyHelper.GetVisibleProperties(type: type); var prefix = viewOptions.SuppressTempDataAttributePrefix ? string.Empty : "TempDataProperty-"; for (var i = 0; i < propertyHelpers.Length; i++) { var propertyHelper = propertyHelpers[i]; var property = propertyHelper.Property; var tempDataAttribute = property.GetCustomAttribute <TempDataAttribute>(); if (tempDataAttribute != null) { ValidateProperty(propertyHelper.Property); if (results == null) { results = new List <LifecycleProperty>(); } var key = tempDataAttribute.Key; if (string.IsNullOrEmpty(key)) { key = prefix + property.Name; } results.Add(new LifecycleProperty(property, key)); } } return(results); }
private static HtmlHelper <TModel> GetHtmlHelper <TModel>( ViewDataDictionary <TModel> viewData, IUrlHelper urlHelper, ICompositeViewEngine viewEngine, IModelMetadataProvider provider, Func <IHtmlHelper, IHtmlHelper> innerHelperWrapper, IHtmlGenerator htmlGenerator, string idAttributeDotReplacement) { var httpContext = new DefaultHttpContext(); var actionContext = new ActionContext(httpContext, new RouteData(), new ActionDescriptor()); var options = new MvcViewOptions(); if (!string.IsNullOrEmpty(idAttributeDotReplacement)) { options.HtmlHelperOptions.IdAttributeDotReplacement = idAttributeDotReplacement; } var localizationOptionsAccesor = new Mock <IOptions <MvcDataAnnotationsLocalizationOptions> >(); localizationOptionsAccesor.SetupGet(o => o.Value).Returns(new MvcDataAnnotationsLocalizationOptions()); options.ClientModelValidatorProviders.Add(new DataAnnotationsClientModelValidatorProvider( new ValidationAttributeAdapterProvider(), localizationOptionsAccesor.Object, stringLocalizerFactory: null)); var optionsAccessor = new Mock <IOptions <MvcViewOptions> >(); optionsAccessor .SetupGet(o => o.Value) .Returns(options); var urlHelperFactory = new Mock <IUrlHelperFactory>(); urlHelperFactory .Setup(f => f.GetUrlHelper(It.IsAny <ActionContext>())) .Returns(urlHelper); var expressionTextCache = new ExpressionTextCache(); if (htmlGenerator == null) { var attributeProvider = new DefaultValidationHtmlAttributeProvider( optionsAccessor.Object, provider, new ClientValidatorCache()); htmlGenerator = new DefaultHtmlGenerator( Mock.Of <IAntiforgery>(), optionsAccessor.Object, provider, urlHelperFactory.Object, new HtmlTestEncoder(), attributeProvider); } // TemplateRenderer will Contextualize this transient service. var innerHelper = (IHtmlHelper) new HtmlHelper( htmlGenerator, viewEngine, provider, new TestViewBufferScope(), new HtmlTestEncoder(), UrlEncoder.Default); if (innerHelperWrapper != null) { innerHelper = innerHelperWrapper(innerHelper); } var serviceProvider = new ServiceCollection() .AddSingleton(viewEngine) .AddSingleton(urlHelperFactory.Object) .AddSingleton(Mock.Of <IViewComponentHelper>()) .AddSingleton(innerHelper) .AddSingleton <IViewBufferScope, TestViewBufferScope>() .BuildServiceProvider(); httpContext.RequestServices = serviceProvider; var htmlHelper = new HtmlHelper <TModel>( htmlGenerator, viewEngine, provider, new TestViewBufferScope(), new HtmlTestEncoder(), UrlEncoder.Default, expressionTextCache); var viewContext = new ViewContext( actionContext, Mock.Of <IView>(), viewData, new TempDataDictionary( httpContext, Mock.Of <ITempDataProvider>()), new StringWriter(), options.HtmlHelperOptions); htmlHelper.Contextualize(viewContext); return(htmlHelper); }
private static HtmlHelper <TModel> GetHtmlHelper <TModel>( ViewDataDictionary <TModel> viewData, IUrlHelper urlHelper, ICompositeViewEngine viewEngine, IModelMetadataProvider provider, Func <IHtmlHelper, IHtmlHelper> innerHelperWrapper, IHtmlGenerator htmlGenerator, string idAttributeDotReplacement) { var httpContext = new DefaultHttpContext(); var actionContext = new ActionContext(httpContext, new RouteData(), new ActionDescriptor(), viewData.ModelState); var options = new MvcViewOptions(); if (!string.IsNullOrEmpty(idAttributeDotReplacement)) { options.HtmlHelperOptions.IdAttributeDotReplacement = idAttributeDotReplacement; } var localizationOptionsAccesor = new Mock <IOptions <MvcDataAnnotationsLocalizationOptions> >(); localizationOptionsAccesor.SetupGet(o => o.Value).Returns(new MvcDataAnnotationsLocalizationOptions()); options.ClientModelValidatorProviders.Add(new DataAnnotationsClientModelValidatorProvider( new ValidationAttributeAdapterProvider(), localizationOptionsAccesor.Object, stringLocalizerFactory: null)); var optionsAccessor = new Mock <IOptions <MvcViewOptions> >(); optionsAccessor .SetupGet(o => o.Value) .Returns(options); var valiatorProviders = new[] { new DataAnnotationsModelValidatorProvider( new ValidationAttributeAdapterProvider(), new TestOptionsManager <MvcDataAnnotationsLocalizationOptions>(), stringLocalizerFactory: null), }; var validator = new DefaultObjectValidator(provider, valiatorProviders); validator.Validate(actionContext, validationState: null, prefix: string.Empty, viewData.Model); var urlHelperFactory = new Mock <IUrlHelperFactory>(); urlHelperFactory .Setup(f => f.GetUrlHelper(It.IsAny <ActionContext>())) .Returns(urlHelper); var expressionTextCache = new ExpressionTextCache(); var attributeProvider = new DefaultValidationHtmlAttributeProvider( optionsAccessor.Object, provider, new ClientValidatorCache()); if (htmlGenerator == null) { htmlGenerator = new DefaultHtmlGenerator( Mock.Of <IAntiforgery>(), optionsAccessor.Object, provider, urlHelperFactory.Object, new HtmlTestEncoder(), attributeProvider); } // TemplateRenderer will Contextualize this transient service. var innerHelper = (IHtmlHelper) new HtmlHelper( htmlGenerator, viewEngine, provider, new TestViewBufferScope(), new HtmlTestEncoder(), UrlEncoder.Default); if (innerHelperWrapper != null) { innerHelper = innerHelperWrapper(innerHelper); } var serviceCollection = new ServiceCollection(); serviceCollection .AddSingleton(viewEngine) .AddSingleton(urlHelperFactory.Object) .AddSingleton(Mock.Of <IViewComponentHelper>()) .AddSingleton(innerHelper) .AddSingleton <IViewBufferScope, TestViewBufferScope>() .AddSingleton <ValidationHtmlAttributeProvider>(attributeProvider) .AddHtmlTags(reg => { reg.Editors.IfPropertyIs <DateTimeOffset>().ModifyWith(m => m.CurrentTag.Attr("type", "datetime-local") .Value(GetDateValue(m.Value <DateTimeOffset?>()))); }); var serviceProvider = serviceCollection.BuildServiceProvider(); httpContext.RequestServices = serviceProvider; var htmlHelper = new HtmlHelper <TModel>( htmlGenerator, viewEngine, provider, new TestViewBufferScope(), new HtmlTestEncoder(), UrlEncoder.Default, expressionTextCache); var viewContext = new ViewContext( actionContext, Mock.Of <IView>(), viewData, new TempDataDictionary( httpContext, Mock.Of <ITempDataProvider>()), new StringWriter(), options.HtmlHelperOptions) { ClientValidationEnabled = true }; htmlHelper.Contextualize(viewContext); return(htmlHelper); }
public static IHtmlGenerator GetHtmlGenerator(IModelMetadataProvider provider, IUrlHelperFactory urlHelperFactory, MvcViewOptions options) { var optionsAccessor = new Mock <IOptions <MvcViewOptions> >(); optionsAccessor .SetupGet(o => o.Value) .Returns(options); var attributeProvider = new DefaultValidationHtmlAttributeProvider( optionsAccessor.Object, provider, new ClientValidatorCache()); var htmlGenerator = new DefaultHtmlGenerator( Mock.Of <IAntiforgery>(), optionsAccessor.Object, provider, urlHelperFactory, new HtmlTestEncoder(), attributeProvider); return(htmlGenerator); }
public TempDataFilterPageApplicationModelProvider(IOptions <MvcViewOptions> options) { _options = options.Value; }
public DisableClientValidationFilter(IOptions <MvcViewOptions> optionsAccessor) { _options = optionsAccessor.Value; }
// GetCurrentValues uses only the IModelMetadataProvider passed to the DefaultHtmlGenerator constructor. private static IHtmlGenerator GetGenerator(IModelMetadataProvider metadataProvider, MvcViewOptions options = default) { var mvcViewOptionsAccessor = new Mock <IOptions <MvcViewOptions> >(); mvcViewOptionsAccessor.SetupGet(accessor => accessor.Value).Returns(options ?? new MvcViewOptions()); var htmlEncoder = Mock.Of <HtmlEncoder>(); var antiforgery = new Mock <IAntiforgery>(); antiforgery .Setup(mock => mock.GetAndStoreTokens(It.IsAny <DefaultHttpContext>())) .Returns(() => { return(new AntiforgeryTokenSet("requestToken", "cookieToken", "formFieldName", "headerName")); }); var attributeProvider = new DefaultValidationHtmlAttributeProvider( mvcViewOptionsAccessor.Object, metadataProvider, new ClientValidatorCache()); return(new DefaultHtmlGenerator( antiforgery.Object, mvcViewOptionsAccessor.Object, metadataProvider, new UrlHelperFactory(), htmlEncoder, attributeProvider)); }
private static HtmlHelper <TModel> GetHtmlHelper <TModel>( ViewDataDictionary <TModel> viewData, IUrlHelper urlHelper, ICompositeViewEngine viewEngine, IModelMetadataProvider provider, Func <IHtmlHelper, IHtmlHelper> innerHelperWrapper, IHtmlGenerator htmlGenerator, string idAttributeDotReplacement) { var httpContext = new DefaultHttpContext(); var actionContext = new ActionContext(httpContext, new RouteData(), new ActionDescriptor()); var options = new MvcViewOptions(); if (!string.IsNullOrEmpty(idAttributeDotReplacement)) { options.HtmlHelperOptions.IdAttributeDotReplacement = idAttributeDotReplacement; } var localizationOptionsAccesor = new Mock <IOptions <MvcDataAnnotationsLocalizationOptions> >(); localizationOptionsAccesor.SetupGet(o => o.Value).Returns(new MvcDataAnnotationsLocalizationOptions()); options.ClientModelValidatorProviders.Add(new DataAnnotationsClientModelValidatorProvider( localizationOptionsAccesor.Object, stringLocalizerFactory: null)); var optionsAccessor = new Mock <IOptions <MvcViewOptions> >(); optionsAccessor .SetupGet(o => o.Value) .Returns(options); var serviceProvider = new Mock <IServiceProvider>(); serviceProvider .Setup(s => s.GetService(typeof(ICompositeViewEngine))) .Returns(viewEngine); serviceProvider .Setup(s => s.GetService(typeof(IUrlHelper))) .Returns(urlHelper); serviceProvider .Setup(s => s.GetService(typeof(IViewComponentHelper))) .Returns(new Mock <IViewComponentHelper>().Object); serviceProvider .Setup(s => s.GetService(typeof(IViewComponentHelper))) .Returns(new Mock <IViewComponentHelper>().Object); httpContext.RequestServices = serviceProvider.Object; if (htmlGenerator == null) { htmlGenerator = new DefaultHtmlGenerator( Mock.Of <IAntiforgery>(), optionsAccessor.Object, provider, urlHelper, new CommonTestEncoder()); } // TemplateRenderer will Contextualize this transient service. var innerHelper = (IHtmlHelper) new HtmlHelper( htmlGenerator, viewEngine, provider, new CommonTestEncoder(), new UrlEncoder(), new JavaScriptStringEncoder()); if (innerHelperWrapper != null) { innerHelper = innerHelperWrapper(innerHelper); } serviceProvider .Setup(s => s.GetService(typeof(IHtmlHelper))) .Returns(() => innerHelper); var htmlHelper = new HtmlHelper <TModel>( htmlGenerator, viewEngine, provider, new CommonTestEncoder(), new UrlEncoder(), new JavaScriptStringEncoder()); var viewContext = new ViewContext( actionContext, Mock.Of <IView>(), viewData, new TempDataDictionary( new HttpContextAccessor(), Mock.Of <ITempDataProvider>()), new StringWriter(), options.HtmlHelperOptions); htmlHelper.Contextualize(viewContext); return(htmlHelper); }