Tag: asp.net core viewcomponent

ViewComponent和InvokeAsync方法

在下面的方法中,我收到警告 : This async method lacks ‘await’ operators and will run synchronously 。 我在哪里可以使用await这个方法? 注意 :此方法返回一个简单的静态视图,而不与数据库等交互。 public class TestViewComponent : ViewComponent { public async Task InvokeAsync() { return View(); } }

是否可以从自定义TagHelper调用ViewComponent?

我正在编写一个自定义TagHelper,并希望在其中呈现ViewComponent。 类似于vc:xyz标签帮助器的东西,但是以更加受控的方式,这样我就可以在运行时确定要渲染哪个ViewComponent。 可能吗?

使用asp-for作为参数的自定义ViewComponent

我想包装这个: 到可重用的ViewComponent,其中属性将是参数: 我能够将asp-for参数传递给viewcomponent: public class EditorViewComponent : ViewComponent { public IViewComponentResult Invoke(ModelExpression aspFor = null) { //when debugging, aspFor has correct value return View(aspFor); } } 但我无法在组件的视图中评估它。 这不起作用: @model Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression 有任何想法吗?

如何unit testingViewComponent.Invoke()?

在ViewComponent对象中, HttpContext和User是只读属性。 如何对这样的组件进行unit testing? 我正在使用MSTest Freamwork。 以下属性用于我的代码中 曲奇饼 会议 用户(System.Security.Principal) public ViewViewComponentResult Invoke() { var vm = new SummaryViewModel(); if (User.Identity is ClaimsIdentity identity && identity.IsAuthenticated) { vm.IsAuthenticated = true; vm.UserName = identity.Claims.FirstOrDefault(c => c.Type == “UserName”).Value; vm.PhotoUrl = identity.Claims.FirstOrDefault(c => c.Type == “FacePicture”).Value; } return View(vm); } [TestMethod] public void UserSummaryVcTest() { var component […]

ASP.NET MVC 6:在单独的程序集中查看组件

我想在MVC 6 Web启动项目的单独程序集中定义视图组件(ASP.NET MVC 6中的新组件),以便我可以在多个Web项目中重用它们。 示例解决方案可能如下所示: BookStore.Components (容纳常见视图组件) BookStore.Web1 (引用BookStore.Components) BookStore.Web2 (引用BookStore.Components) 我创建了一个新的类库(Package)并在其中创建了一个视图组件。 我还在嵌套文件夹约定之后创建了视图。 我的BookStore.Components项目如下所示: 当我尝试从我的Web项目中调用此视图组件时: @Component.Invoke(“BookOfTheMonth”) …我的内容正文出现了500错误。 似乎发现了ViewComponent类,但组件的剃刀视图却没有。 我还尝试扩展DefaultViewComponentDescriptorProvider以便可以发现BookStore.Components程序BookStore.Components视图组件: 定义了AssemblyProvider public class AssemblyProvider : IAssemblyProvider { public IEnumerable CandidateAssemblies { get { yield return typeof(AssemblyProvider).Assembly; yield return typeof(BookStore.Components.BookOfTheMonthViewComponent).Assembly; } } } 使用Autofac注册的AssemblyProvider builder.RegisterType() .AsImplementedInterfaces(); builder.RegisterType() .AsImplementedInterfaces(); 我不确定是否需要注册上面的DefaultViewComponentDescriptorProvider ,所以我尝试使用和不使用它,但我仍然在调用视图组件的页面上得到500错误。 如何从MVC6 Web项目中调用位于单独程序集中的视图组件?