HiddenInput(DisplayValue = false)在一台开发机器上运行,但不在另一台机器上运行

时间:2012-07-10 14:31:04

标签: asp.net-mvc-3 entity-framework hidden-field

* 已解决,请参阅下面的更新

我有一个类,其中包含以下两个属性:

[HiddenInput(DisplayValue = false)]
public int ProductId { get; set; }

[Required(ErrorMessage = "Please enter a product name")]
public string Name { get; set; }

当我在一台机器上运行解决方案时,当我导航到相关页面时,我没有看到EditorFor ProductId - 当我在另一台机器上运行它(同样来自github)我确实看到了它(并且能够编辑它)。我不想看到它。

我认为每台机器上唯一重要的是实际的数据库本身。

为什么我可以在一台计算机上看到我的ProductId属性编辑器,但在使用相同的代码时却看不到另一台?

注意

MVC在每台机器上呈现不同的视图(生成的HTML不同 - 这反映了上面的差异)。

更新

解决了问题,请参阅下面的答案。

2 个答案:

答案 0 :(得分:1)

想出来。 。 。那种。

奇怪的是,在尝试继续前进一段时间后,我在应用程序的其他地方遇到了另一个问题。这个问题和MisterJames对原始问题的评论引导我进入answer

为了简单起见,我刚从机器上卸载MVC4,这给我带来了问题(我没有在其他机器上安装MVC4),我的两个问题都消失了。

答案 1 :(得分:1)

我遇到了类似的问题,我将[HiddenInput(DisplayValue = false)]注释添加到模型中的类的productId属性中。该模型是我的MVC项目的一个单独项目。为了获得注释,我必须包含对System.Web.Mvc的引用,但我已经包含v.4.0.0.0而我的MVC项目是v.3.0.0.0

这导致注释不起作用,即使所有项目都将编译并且所有其他功能保持不变。

我通过编辑我的模型项目的.csproj文件来修复此问题,将所包含引用的版本从4.0.0.0切换到3.0.0.0。这也可以通过删除对错误版本的引用并重新添加正确的版本来实现。