c# - 枚举参数在 Visual Studio Asp.Net MVC 中传递不正确的值

标签 c# asp.net asp.net-mvc visual-studio asp.net-mvc-4

我们在 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/

相关文章:

c# - 音频生成软件或 .NET 库

c# - Guid 字符串应仅包含十六进制字符

c# - 如何在列表中查找行

c# - 为什么 DropDownList.SelectedItem.Value 不显示赋值

c# - 图表处理程序配置中的临时图像目录无效 [C :\Users\user1\Documents\Visual Studio 2010\WebSites\Website1\]

asp.net - 使用 asp.net mvc 和 Identity 的每个选项卡 session

asp.net-mvc - 更新 nuget 后 StackExchange.Redis.Extensions 错误

c# - 异常 : Invalid object name 'Movie'

c# - 参数类型 'Edm.String' 和 'Edm.Int32' 与此操作不兼容

使用自定义验证器进行 ASP.Net 字数统计