枚举参数获取在Visual Studio Asp.Net MVC中传递不正确的值

本文关键字:不正确 MVC Net 获取 参数 Visual Asp Studio 枚举 | 更新日期: 2023-09-27 18:33:41

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

@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,这恰好是 VisitGozo.Enums.VisitGozoEnums.ContentTextIdentifier.MasterPage_Weather_Title 之后 ContentTextIdentifier 枚举的下一个值。

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

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

对为什么会发生这个奇怪的问题有什么可能的见解吗?


编辑#1:此外,当我们在部署服务器上上传网站时,使用相同的工作站进行编译后,错误也被继承了

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

枚举参数获取在Visual Studio Asp.Net MVC中传递不正确的值

很可能缓存的文件尚未清理。它可能偶尔发生。

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

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

更新 Razor 文件强制动态编译,这解决了您的问题。