首页 > 解决方案 > 在视图的一部分内渲染 HTML 而不影响其他标签

问题描述

只是我想在视图内呈现电子邮件的正文部分,我的问题是电子邮件正文的样式对我页面的其他 html 部分产生影响时。

    <div class="col-md-12 m-b-5">
        <div id="email" dir="ltr">
            @Html.Raw(ViewBag.Body)
        </div>
    </div>

我不知道在电子邮件 div 中呈现什么,并且希望在此上的所有内容都在此 div 中呈现,而不影响页面的其他部分。

标签: htmlcssasp.net-mvcuser-interfacemailkit

解决方案


您可以在为 Outlook 插件设置之前删除所有无效内容,Viewbag.body我使用此代码过滤掉一些生成的内容。我遇到的问题是嵌入图像,所以我使用正则表达式将它们过滤掉。也许你可以做类似的事情?

            var reg = new Regex("<img[^>]+['\"][^>]*>");
            var matches = reg.Matches(message.Body);
            foreach (var match in matches)
            {
                body = body.Replace(match.ToString(), "");
            }

编辑

当您查看电子邮件的来源(outlook html 格式的电子邮件)时,您会看到在邮件开头定义的许多 CSS 类和规则。实际的邮件以正文标记(屏幕)开头。所以你可以抓住body标签内的数据并显示它 在此处输入图像描述


推荐阅读