0

我正在尝试让 RazorGenerator.MsBuild 在构建时编译我们的 CSHTML 文件。我遇到的问题是从自定义 WebViewPage 继承的 CSHTML 页面会引发编译错误。如果将这些 CSHTML 文件复制到网站上,它们将在运行时工作,只有构建失败。

例如,我们可能有以下 CSHTML 文件:

public class MyWebViewPage : System.Web.Mvc.WebViewPage
{
    public bool DoSomething()
    {
        return true;
    }
}

以及以下 CSHTML:

@inherits MyWebViewPage 

@if(DoSomething()){

}

这将导致以下错误:

The name 'DoSomething' does not exist in the current context.

如何让 MSBuild 任务识别我的自定义类?

4

1 回答 1

0

事实证明这是 RazorGenerator.MsBuild 生成代码的方式存在问题。编译时将继承的类写为:

MyView : MyWebViewPage<dynamic>

生成器需要通用基础视图。最简单的解决方案是更改 MyWebViewPage 以支持泛型:

public class MyWebViewPage<T> : System.Web.Mvc.WebViewPage<T>
{
    public bool DoSomething()
    {
        return true;
    }
}
于 2016-12-20T10:51:07.680 回答