我们在 Asp.Net MVC 4 Razor 中遇到了这个非常奇怪的错误,因此在 View 中,我们有以下代码:
@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
值会自动递增。
- 奇怪的是,如果我们将完全相同的项目加载到另一台工作站上,则一切正常。
- 此外,如果我们对 View 进行一些更改(比如只添加一个空格)并保存,这也可以正常工作。
对于为什么会发生这个奇怪的问题有任何可能的见解吗?
编辑 #1:另外,当我们在部署服务器上上传网站时,在使用同一工作站编译后,错误也被遗留
编辑 #2:2013-10-22 > 我们仍然遇到同样的问题,即使在实际生产服务器上部署文件时,也会保留这种不正确的枚举值。解决问题的唯一方法是从服务器/本地删除 View ,然后重新覆盖它们。知道我们如何解决这个问题吗?我们不应该缓存 View ,所以不能真正理解为什么会这样?非常感谢任何形式的帮助!
最佳答案
很可能缓存的文件没有被清除。它可能偶尔会发生。
如果您使用 IIS,请删除相应的 Temporary ASP.NET 文件夹。例如,如果您的项目是 64 位 Framwork 4.0,则路径为: %WinDir%\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\
如果您使用 IIS Express 或类似工具,您可能需要停止它并重新开始。
更新 Razor 文件强制进行动态编译,这解决了您的问题。
关于c# - 枚举参数在 Visual Studio Asp.Net MVC 中传递不正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19142844/