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

Mar*_*ark 8 c# asp.net-mvc asp.net-mvc-3

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

即.如果我使用TextBoxFor:

@Html.TextBoxFor(model => model.RoomTypeName)
Run Code Online (Sandbox Code Playgroud)

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

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

@Html.DisplayTextFor(model => model.RoomTypeName)
Run Code Online (Sandbox Code Playgroud)

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

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

@Html.DisplayTextFor(model => model.RoomTypeName)
@Html.HiddenFor(model => model.RoomTypeName)
Run Code Online (Sandbox Code Playgroud)

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

谢谢,

标记

Sta*_*tan 13

@Html.DisplayTextFor(model => model.RoomTypeName)
@Html.HiddenFor(model => model.RoomTypeName)
Run Code Online (Sandbox Code Playgroud)

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

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