枚举参数获取在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> 我们仍然遇到同样的问题,即使在实际的生产服务器上部署文件时,这种不正确的枚举值也会被继承。 解决此问题的唯一方法是从服务器/本地删除视图,然后再次重新覆盖它们。 知道我们如何解决这个问题吗? 我们不应该缓存视图,所以无法真正理解为什么会发生这种情况? 将不胜感激任何形式的帮助!
很可能缓存的文件尚未清理。它可能偶尔发生。
-
如果使用 IIS,请删除相应的临时 ASP.NET 文件夹。例如,如果您的项目是 64 位 Framwork 4.0,则路径将为:%WinDir%''Microsoft.NET''Framework64''v4.0.30319''临时 ASP.NET 文件''
-
如果您使用 IIS Express 或类似产品,则可能需要停止它并重新启动。
更新 Razor 文件强制动态编译,这解决了您的问题。