通过RazorEngine

时间:2018-10-01 11:14:27

标签: css razor asp.net-core-2.0 razorengine

我想在我的 cshtml 文件中使用外部和内部CSS。

我在这里使用RazorEngine编译器。

如果我尝试在不添加外部CSS的情况下运行,则工作正常。但是,当我尝试添加外部CSS时,会引发以下错误:

  

RazorEngine.Templating.TemplateCompilationException:'错误而   编译模板。请尝试以下解决方法:   *如果问题是有关缺少/无效引用或多个定义的问题,请尝试加载       手动缺少参考(在正在编译的appdomain中!)或       通过提供自己的IReferenceResolver实现手动指定引用。       有关详情,请参见https://antaris.github.io/RazorEngine/ReferenceResolver.html。       当前,所有参考都必须以文件形式提供! *如果获得“类”,则不包含“成员”的定义:           尝试另一个modelType(例如,使模型动态化为“ null”)。           注意:您不能使用typeof(dynamic)来使模型动态!       或者尝试使用静态而不是匿名/动态类型。有关该错误的更多详细信息:    -错误:(17,29)当前上下文中不存在名称“ Url”,请在以下位置找到编译的临时文件:   删除文件夹):   C:\ Users \ pratik.soni \ AppData \ Local \ Temp \ RazorEngine_d253hedw.3b5   我们尝试编译的模板是:   ------------- START ----------- @model DRC.DTO.EFiling.NewEFilingDeclarationModel;                            

CSHTML文件如下:

@model DRC.DTO.EFiling.NewEFilingDeclarationModel;
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=\, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link href="@Url.Content("~/wwwroot/CSS/StyleSheet.css")" rel="stylesheet" />
</head>
<body class="bg-gray">
    <h2 class="h2">VAT e-Filing</h2>
    <div class="bg-white">
        <div class="">

。 。

编译模板的代码如下:

public string CompileTemplate(string templatePath, string name, object model)
        {
            string rootPath = _env.ContentRootPath;
            string fullPath = Path.Combine(rootPath, templatePath, name).ToString();
            string templateSource = File.ReadAllText(fullPath);

            string templateString;
            if (Engine.Razor.IsTemplateCached(name, model.GetType()))
            {
                templateString = Engine.Razor.Run(name, model.GetType(), model);
            }
            else
            {
                templateString = Engine.Razor.RunCompile(templateSource, name, model.GetType(), model); //**GETTING ERROR ON THIS LINE**
            }

            return templateString;
        }

Stylesheet.css

body {
}

.h2 {
    color: blue;
    margin-left: 20px;
}

1 个答案:

答案 0 :(得分:1)

UrlHelper仅存在于请求的上下文中。您是在请求管道之外渲染视图,因此未定义Url。但是,无论如何,您实际上并不需要它。您应该可以将代码更改为:

<link href="~/wwwroot/CSS/StyleSheet.css" rel="stylesheet" />