c# - ParseControl 不支持内联代码块的解决方法?

标签 c# asp.net inline-code

我在 ASP.Net 中使用 ParseControl 方法来呈现一些来自外部数据源的混合 HTML 和服务器控制代码。

这运行良好,但是 ParseControl 似乎不支持内联脚本 block (<% %>),我想知道是否有一个简单的替代方案或解决方法?这是一个简单的示例(现实世界的实现更为复杂):

string externalCodeString = "<div><%= DateTime.Now %></div>";
Control control = ParseControl(externalCodeString);
placeholder.Controls.Add(control);

最佳答案

ParseControl 确实不支持代码块,因为它永远不会导致任何编译。

一种应该可行但更复杂的方法是改为依赖由 VirtualPathProvider 提供的 UserControl。

理论上您可以将其包装到像 ParseControl 这样的简单 API 中,但它实际上会编译用户控件。

您必须进行适当的缓存,以确保您不会在每次调用时都进行编译,这会破坏性能。

动态语言会更适合这样的事情:)

关于c# - ParseControl 不支持内联代码块的解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7063861/

相关文章:

ASP.NET Web API 在 Controller 构造函数中获取用户身份

asp.net - "Retrieving the COM class factory for component.... error: 80070005 Access is denied."(HRESULT : 0x80070005 (E_ACCESSDENIED)) 异常

c# - 编写内联事件处理程序是不好的做法吗

javascript - 内联 PHP 停止使用 if 函数和 javascript

c# - 如何使用 System.Text.Json 将所有 `Nullable<T>` 值类型的空字符串反序列化为空值?

c# - 并发词典的正确用法

asp.net - 在 ASP.NET 中实现可编辑的 DropDownList

c# - 尽管我正在实例化对象,但对象引用未设置为对象错误的实例

java - X509Certificate 在 Java 中返回到 byte[],在 C# 中返回到 X509Certificate

c - 使用内联函数乘以定义的链接器错误