asp.net-core – 如何从控制器调用View组件

前端之家收集整理的这篇文章主要介绍了asp.net-core – 如何从控制器调用View组件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否可以从控制器调用View Component并将其渲染为字符串?我真的在寻找一些代码示例.任何帮助都感激不尽.

解决方法

你可以这样做,但你必须应用以下的东西,因为它是由DefaultViewComponentHelper渲染.

您必须创建此实例并创建您需要IViewComponentSelector和IViewComponentInvokerFactory.

要做到这一点,我做了以下事情.

public class HomeController : Controller
    {
        Microsoft.AspNet.Mvc.DefaultViewComponentHelper helper = null;
        Microsoft.AspNet.Mvc.Razor.RazorView razorView = null;
        public HomeController(IViewComponentSelector selector,IViewComponentInvokerFactory factory,IRazorPageFactory razorPageFactory,IRazorPageActivator pageActivator,IViewStartProvider viewStartProvider)
        {
            helper = new DefaultViewComponentHelper(selector,factory);
            razorView = new Microsoft.AspNet.Mvc.Razor.RazorView(razorPageFactory,pageActivator,viewStartProvider);           
        }
        public IActionResult Index()
        {                  
            ViewContext context = new ViewContext(ActionContext,razorView,ViewData,null);
            helper.Contextualize(context);
            string st1 = helper.Invoke("My",null).ToString();
            return View();
        }
}

这是我的示例View Component.

public class MyViewComponent : ViewComponent
    {     

        public MyViewComponent()
        {

        }

        public IViewComponentResult Invoke()
        {
            return Content("This is test");
        }
    }

猜你在找的asp.Net相关文章