Используйте внешний CSS в `cshtml` с RazorEngine - PullRequest
0 голосов
/ 01 октября 2018

Я хотел использовать внешний и внутренний CSS в моем cshtml файле.

Я использую здесь RazorEngine компилятор.

Если япопробуйте запустить без добавления внешнего CSS, он работает нормально.Но когда я пытаюсь добавить внешний CSS, он выдает ошибку, упомянутую ниже:

RazorEngine.Templating.TemplateCompilationException: 'Ошибки при компиляции шаблона.Чтобы решить эту проблему, попробуйте следующее: * Если проблема связана с отсутствующими / недействительными ссылками или множественные определения, либо попробуйте загрузить отсутствующие ссылки вручную (в домене компиляции!), Либо укажите свои ссылки вручную, предоставив собственную реализацию IReferenceResolver.Подробнее см. https://antaris.github.io/RazorEngine/ReferenceResolver.html.В настоящее время все ссылки должны быть доступны в виде файлов!* Если вы получаете 'class', не содержит определения для 'member': попробуйте другой 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 голосов
/ 01 октября 2018

UrlHelper существует только в контексте запроса.Вы визуализируете представление вне конвейера запроса, поэтому Url не определено.Тем не менее, вам все равно здесь это не нужно;Вы должны иметь возможность просто изменить свой код на:

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