asp.net-core - 在作为标签助手调用的视图组件中,我们如何访问内部 HTML?
问题描述
在标签助手中,我们可以访问 HTML 内部的标签。
<!-- Index.cshtml -->
<my-first>
This is the original Inner HTML from the *.cshtml file.
</my-first>
// MyFirstTagHelper.cs > ProcessAsync
var childContent = await output.GetChildContentAsync();
var innerHtml = childContent.GetContent();
如果我们调用视图组件作为标签助手,我们如何访问内部 HTML?
<vc:my-first>
This is the original Inner HTML from the *.cshtml file.
</vc:my-first>
// MyFirstViewComponent.cs > InvokeAsync()
var innerHtml = DoMagic();
一些进一步的想法:
我很欣赏我们可以通过 HTML 属性将任意内容传递给视图组件。但是,在文本量很大的情况下,这可能变得不切实际,在这种情况下,内部 HTML 将更具可读性并具有更好的工具支持。
有些人可能还会说,“那为什么不直接使用标签助手呢?” 好吧,我们想将视图与标签助手相关联,而标签助手不支持视图;相反,标签助手要求我们以编程方式构建所有 HTML。
所以我们陷入了困境。一方面,我们想要一个标签助手,但它们不支持视图;另一方面,我们可以使用视图组件作为标签助手,但视图组件可能不允许我们访问内部 HTML。
解决方案
抱歉,答案是“只需使用标签助手”
请参阅以下问题:https ://github.com/aspnet/Mvc/issues/5465
能够ViewComponent
从标签助手调用 a 只是一种不同的调用方式,而不是使用@Component.Invoke()
.
我可以看出这是在哪里误导,我确实记得在 ASP.NET Core 2.1 教程中看到“视图组件类似于标记帮助程序,但更强大”的声明。
推荐阅读
- firebase - dynamic_link_first_open 事件是否也会触发 first_open?
- azure-active-directory - 无法与 AzureB2C 示例中的 WebAPI 通信
- java - Dropbox API v2 用于查找已同步、移动、重命名、复制和删除的文件
- java - 如何使用 Java 10 jdk.incubator.httpclient 中的 HttpRequest.BodyPublisher?
- java - Spring在条件类的子类中注入bean
- vhdl - BIT_VECTOR 和 ARRAY OF BIT 的区别
- notepad++ - (Notepad++) 在两个子字符串之间查找超过一定长度的字符串
- c++ - 在只有一个 const shared_ptr 的 unordered_set 中找到一个 shared_ptr?
- react-native - 如何使用 React Native 获得简单的右滑动画
- node.js - should.throw()、should.Throw() 和 expect to.throw() 有什么区别?