asp.net如何将 HTML 代码放入一个.resx 资源文件?

标签: Asp.net HTML C#
发布时间: 2017/3/26 5:45:34
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

奇怪,没有人问过这之前...

我创建了模板的 HTML 电子邮件的 4 种语言。我想要放入我的.resx 文件要容易,国际化访问到他们从代码的 HTML 模板。就像这样︰

.resx 文件︰

<data name="BodyTemplate" xml:space="preserve">
    <value><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
        <html>
        <head>
            <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
            <title>Title</title>
            ...
        </body>
        </html>
    </value>
</data>

但是,很明显,编译器抱怨 HTML 里面的.resx 文件。有没有办法在.resx 文件中使用 HTML (或 XML 在所有)。如何?

我使用的.NET 版本 4 和 dotLiquid 作为模板引擎,如果这一点很重要。

解决方法 1:

建议︰ 创建你想要它的名字的方式你想要的例如"my_template.html",然后将此文件添加到您的项目的文件。

点击它,然后在"生成操作"属性窗口中选择并将其设置为"嵌入的资源"。

每当你想要访问此文件,您可以使用这样的事情 (不适当使用块

    public static string ReadTextResourceFromAssembly(string name)
    {
        using ( var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream( name ) )
        {
            return new StreamReader( stream ).ReadToEnd();
        }
    }

根据你的需要定制它。上述方法得到的资源,说你把你的资源在您的项目 MyProject 子目录中"HtmlTemplates 称之为"my_template.html",然后您可以按名称访问它MyProject.HtmlTemplates.my_template.html

然后,你可以将它写出到文件或使用它直接等。

这有一些主要的好处︰ 你看到你 html 文件您的项目,它具有 html 扩展名,所以编辑它在 Visual Studio 中有语法突出显示和应用于.html 文件的所有工具。

我有一串的那些方法为我的单元测试,这一提取数据到一个文件︰

    public static void WriteResourceToFile(string name, string destination)
    {
        using ( var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream( name ) )
        {
            if ( stream == null )
            {
                throw new ArgumentException( string.Format( "Resource '{0}' not found", name), "name" );
            }

            using ( var fs = new FileStream( destination, FileMode.Create ) )
            {
                stream.CopyTo( fs );
            }
        }
    }
官方微信
官方QQ群
31647020