2

我们在 Asp.Net MVC 4 Razor 中有这个非常奇怪的错误,在视图中,我们有以下代码:

@Html.InlineEditingContentText(CS.General_v4.Enums.HtmlTagName.Span, VisitGozo.Enums.VisitGozoEnums.ContentTextIdentifier.MasterPage_Weather_Title, "weather-widget-title masterpage-widget-title")

InlineEditingContentText是我们内部的扩展方法。传递的第二个参数是一个枚举参数,从上面可以看出,值为VisitGozo.Enums.VisitGozoEnums.ContentTextIdentifier.MasterPage_Weather_Title. 现在,当您调试扩展方法InlineEditingContentText时,接收到的实际第二个参数不是VisitGozo.Enums.VisitGozoEnums.ContentTextIdentifier.MasterPage_Weather_Title,但VisitGozo.Enums.VisitGozoEnums.ContentTextIdentifier.MasterPage_Header_LoggedOutText它恰好是 ContentTextIdentifier 枚举之后的下一个值VisitGozo.Enums.VisitGozoEnums.ContentTextIdentifier.MasterPage_Weather_Title

我们没有为枚举赋值,因此它们各自的int值会自动递增。

  • 奇怪的是,如果我们在另一个工作站上加载完全相同的项目,这工作正常。
  • 此外,如果我们对视图进行一些更改(比如添加一个空格)并保存,这也可以正常工作。

任何可能的洞察为什么会发生这个奇怪的问题?


编辑#1:另外,当我们在部署服务器上上传网站时,使用同一工作站编译后,错误也被延续

编辑#2:2013-10-22 > 我们仍然遇到同样的问题,即使在实际生产服务器上部署文件时,这种不正确的枚举值也会被继承。解决该问题的唯一方法是从服务器/本地删除视图,然后再次重新覆盖它们。知道我们如何解决这个问题吗?我们不应该缓存视图,所以不能真正理解为什么会这样?将不胜感激任何形式的帮助!

4

1 回答 1

1

很可能缓存的文件没有被清理。它可能偶尔会发生。

  • 如果使用 IIS 删除相应的 Temporary ASP.NET 文件夹。例如,如果您的项目是 64 位 Framwork 4.0,则路径为:%WinDir%\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\

  • 如果您使用 IIS Express 或类似工具,您可能需要停止它并重新启动。

更新 Razor 文件会强制进行动态编译,从而解决了您的问题。

于 2013-10-02T18:23:10.750 回答