2

我正在使用 RazorGenerator https://github.com/RazorGenerator/RazorGenerator将我的菜单外包给一个 DLL 文件,以便我可以在多个项目中共享它。在这些视图中,我有一个 foreach 循环,它应该生成一个像这样的列表:

@foreach (var myItem in MyClass.Instance.Elements) {
    <li>
        <img src="@myItem.Icon" />
    </li>
}

但我无法编译它们:由 RazorGenerator 生成的 MyView.generated.cs 文件正在为 img 标签创建以下行:

WriteAttribute("src", Tuple.Create(" src=\"", 1038), Tuple.Create("\"", 1057)

这是问题所在,因为我收到未定义“WriteAttribute”的错误。我找不到有关此方法的很多信息,似乎这是来自 RazorGenerator 的方法。

奇怪的是,我之前在测试项目中测试过相同的代码,因为这是我第一次使用 RazorGenerator。在那里它使用相同的循环,但我找不到任何差异。这两个项目在同一版本中也具有相同的引用和程序集。我只发现 WriteAttribute() 来自 WebPageExecutionBase。

我该如何解决这个问题?

4

2 回答 2

1

通过检查两个项目中的每个包,我发现 NuGet-Package Microsoft.ASP.NET.WebPages 安装在过时版本中。无法弄清楚为什么,因为我在项目的 NuGet 管理器中使用了“全部更新”按钮,就像我在测试项目中所做的那样,并且没有显示任何错误。在我写这篇文章时,我使用 NuGet-Console 将包更新到最新版本 3.1.2,现在它可以正常工作了。

于 2015-07-14T20:31:28.297 回答
0

不要按照上面的建议将 Build Action 设置为 none,因为您的本地副本不会生成正确的 generated.cs 文件。

于 2015-08-11T15:57:26.627 回答