3

是否可以在 Web 表单 Web 应用程序中使用 Razor 引擎 ( razorengine.codeplex.com )?我正在使用文件来定义模板,例如

示例.cshtml

<h1>Hello</h1>

或 sample2.cshtml(带有继承以启用智能感知)

@inherits SomeBaseClass<SomeModelClass>
<h1>Hello @Model.SomeProperty</h1>

在应用程序启动时,我编译模板:

//get files and loop
RazorEngine.Razor.Compile(templateString, razorPath);

在用户控件代码隐藏中,我加载/解析模板:

RazorEngine.Razor.Run<SomeModelClass>(model, razorPath);

问题:

Sample.cshtml 给出以下异常:

类型“ASP._Page_razor_Sample_cshtml”不继承自“System.Web.UI.UserControl”。

Sample2.cshtml 给出以下异常(发生异常的代码如下,从编译的 cshtml 源中提取...):

CS0103:当前上下文中不存在名称“上下文”

Line 37:         protected ASP.global_asax ApplicationInstance {
Line 38:             get {
Line 39:                 return ((ASP.global_asax)(Context.ApplicationInstance));
Line 40:             }
Line 41:         }

甚至可以以这种方式使用 Razor 引擎吗?

4

2 回答 2

0

我发现了一些关于将 Razor 与 Master Pages / Partials 一起使用的信息:

http://www.eworldui.net/blog/post/2011/01/07/Using-Razor-Pages-with-WebForms-Master-Pages.aspx

虽然我不认为您可以在网络表单中普遍使用它。

但是,ScottHa 在 NuGet 上放置了一个项目,使在 WebForms 应用程序中启用 MVC 变得更加容易,因此如果您只是尝试将它用于应用程序中的特定事物,这可能会很有用。他在 Mix 与 Phil Haack 的 NuGet 谈话中对此进行了演示:

http://nuget.org/List/Packages/AddMvc3ToWebForms

于 2011-05-13T13:29:37.720 回答
0

这个问题与 Razor 引擎没有任何关系。我在我的 CMS 中使用了一个参数,它恰好是一个保留字(未记录!)。在系统本身也使用path它的情况下用作参数名称可能会导致一些非常奇怪的结果......更是如此,如果参数值确实是通向文件的路径......

于 2011-05-16T08:31:43.977 回答