非Web应用程序中的部分视图

时间:2014-09-22 14:40:48

标签: c# razor partial-views

我在Visual Studio 2013中构建了一个控制台应用程序,它每天发送电子邮件报告。我使用的是用Razor解析的.cshtml模板。 是否可以为我的主cshtml文件使用部分视图? 我尝试使用语法:

    @Html.Partial("_partial")

但是我收到错误(“名称'Html'不存在......”)。 我只找到了有关MVC项目的部分视图的信息。我想知道如何以及如何在控制台应用程序中使用它们。

我还尝试将局部视图渲染到cshtml主模板中的字符串,但我的模板将html标记读作文字字符串。而且我似乎无法在MVC之外使用HTML帮助程序。

提前谢谢。

2 个答案:

答案 0 :(得分:1)

您需要引用 System.Web.Mvc.Html ,然后设置模板库。

Razor.SetTemplateBase(typeof(HtmlTemplateBase<>));

答案 1 :(得分:1)

我解决了这个问题,我会在这里发布答案,以防其他人受益。

我实现了部分方法,该方法将呈现局部视图,然后设置新模板库。

    public class ExtendedTemplateBase<TModel> : TemplateBase<TModel>
    {
        public string Partial<TPartialModel>(string path, TPartialModel model)
        {
            var template = File.ReadAllText(path);
            var partialViewResult = Razor.Parse(template, model);
            return partialViewResult;           
        }
    }