ASP.Net MVC将标签值回发给控制器

时间:2013-07-03 21:40:24

标签: c# asp.net-mvc asp.net-mvc-3

使用EditorTemplate时,如果我希望模型上的值显示在屏幕上,还要发布回控制器,我应该使用什么帮助?

即。如果我使用TextBoxFor:

@Html.TextBoxFor(model => model.RoomTypeName)

...然后用户可以修改文本......

我宁愿只显示文字,但如果我使用:

@Html.DisplayTextFor(model => model.RoomTypeName)

...然后不会回发给控制器。

这是我可以显示文本的唯一方法,也是为了确保我的模型状态有效,添加第二个隐藏字段,例如:

@Html.DisplayTextFor(model => model.RoomTypeName)
@Html.HiddenFor(model => model.RoomTypeName)

我知道这有效,但我想知道是否有一种更优雅的方式 - 所以我可以显示值,并将其发回,而不需要将其复制为隐藏元素?

谢谢,

标记

1 个答案:

答案 0 :(得分:13)

@Html.DisplayTextFor(model => model.RoomTypeName)
@Html.HiddenFor(model => model.RoomTypeName)

这是做你想要达到的目标的非常干净和标准的方式。

如果您要创建自己的HTML帮助程序,它完全相同,那么通过保存一行就会混淆将来可能会读取您的代码的其他人,甚至是您自己。