RazorEngine:能在Webforms应用程序中使用吗?

3

能否在WebForms Web应用程序中使用Razor引擎(razorengine.codeplex.com)?我正在使用文件来定义模板,例如:

Sample.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: 当前上下文中不存在名称为“Context”的内容

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

在这种情况下使用Razor引擎是否可行?

2个回答

0

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


0

我找到了一些关于如何在 Razor 中使用主页面/局部视图的信息:

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

虽然我认为您通常不能在Web表单中使用它。

然而,ScottHa 在NuGet上发布了一个项目,可以更轻松地在WebForms应用程序中启用MVC,因此如果您只是想在应用程序中特定的事物中使用它,这可能会有用。他在Mix上与Phil Haack一起演示了这一点:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接