加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 04:03:02 所属栏目:asp.Net 来源:网络整理
导读:是否可以从控制器调用View Component并将其渲染为字符串?我真的在寻找一些代码示例.任何帮助都感激不尽. 解决方法 你可以这样做,但你必须应用以下的东西,因为它是由DefaultViewComponentHelper渲染. 您必须创建此实例并创建您需要IViewComponentSelector和I
是否可以从控制器调用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");
        }
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读