0

I have a model property:

[HiddenInput(DisplayValue = false)]
public string MyProperty { get; set; }

When I display the property, nothing is shown:

@Html.Display("MyProperty")

Note that as this is for display, I'm not attempting to use:

@Html.Editor("MyProperty")

It shows the value if I use:

@Html.Value("MyProperty")

...but this bypasses the DisplayTemplates.

I'm guessing that the MVC rendering logic has something to stop displaying values with my aforementioned [HiddenInput] attribute, but if I wanted to do that explicitly I would use [ShowForDisplay(false)].

Any ideas?

4

2 回答 2

3

Display函数“返回由字符串表达式表示的对象中每个属性的 HTML 标记”(请参阅​​ http://msdn.microsoft.com/en-us/library/ee310174(v=vs.98).aspx

这意味着,如果您的字段是隐藏字段,它确实会吐出标记,但由于标记是隐藏字段的标记,您不会直接在页面上看到任何内容。你会得到类似的东西<input type="hidden" value="your value" />。如果您查看页面代码,您会看到标记在那里。

如果您只想在页面上显示一个值,您可以简单地执行@Model.Property. 如果要将值输入到控件中,可以调用许多@Html基于控件的任何一个,并将其输入Model.Property为默认值。

就个人而言,我不喜欢定义页面在模型中的外观的想法。对我来说,值本身应该由模型管理,但它的显示方式应该由您的视图本身决定。


我了解您在这里使用的是显示器而不是输入视图。尽管如此,该HiddenInput属性只是声明当为字段呈现编辑器时(例如 with @Html.EditorFor()),它应该是隐藏的输入 HTML 元素。如果您不尝试渲染编辑器,则此属性与结果无关,您可以@Model.Property像我之前提到的那样简单地在屏幕上渲染元素。

于 2012-12-19T12:39:54.983 回答
0

您可以只尝试 [HiddenInput] 而不是 [HiddenInput(DisplayValue = false)]。这将自动显示显示的字段并作为标签进行编辑。希望这可以帮助。

于 2013-05-14T15:29:05.267 回答