确定剃须刀生成的视图中 html 表的大小

Determine size of html table in razor generated view

本文关键字:html 视图 剃须刀      更新时间:2023-09-26

已编辑 我已经改写了这个问题,因为它被标记为太宽泛。

我正在使用 razor 引擎来创建强类型电子邮件模板,我想在生成的 HTML 中找到特定表格单元格的高度。

我正在像这样生成HTML

var templateService = new TemplateService();
var emailHtmlBody = templateService.Parse(File.ReadAllText(template.TemplateFilePath), template, null, null);

这将创建一个 html 字符串,是否可以使用 mvc 或 razor 引擎确定特定 html 元素的高度(动态(,或者我是否需要使用渲染引擎首先呈现 html,然后使用 JavaScript 查询等技术来获取值。

我在 WCF 应用程序中运行它,因此呈现引擎需要无头 - 标准的 .net 浏览器控件将不起作用。

我已经在第三方库上取得了成功(请参阅我提出的答案(,有没有更好的方法可以在不使用这些库的情况下做到这一点?

这决定了您将在哪里真正使用高度。如果你在页面中需要它,你可以随时使用 JavaScript。一种方法是给你的表一个id属性,并使用一个简单的JavaScript函数来确定该表的高度。此函数可以驻留在布局页面的末尾。

<script>
    var tableHeight = 0;
    $( document ).ready(function() {
        tableHeight = document.getElementById('tableId').style.offsetheight;
    });
</script>

之后,您可以在任何 JavaScript 代码中全局访问tableHeight。另一方面,如果需要在服务器端代码上使用它,则需要将其分配给模型中托管的输入变量,并在[HttpPost]操作方法中检索它。

我发现最简单的方法是解析视图,将生成的 html(使用所需的 JavaScript(保存到 Web 服务器(或本地,ymmv(,然后在无头浏览器中加载页面,如 SimpleBrowser.WebDriver(替代方案awesomiumwebkit.net - 显然您可以在无头模式下运行它们(,然后返回呈现的 html,为您提供从 js 脚本中所需的值。

我会

将此标记为答案,但如果有任何更简单的方法,我会很感兴趣。