如何从 @Html.EditForModel() 中排除字段,但使用 Html.DisplayForModel() 显示该字段
我正在阅读 ASP.NET MVC 及其所有有趣的用途,我刚刚发现了 数据模板。
为了急于测试这个东西,我将一个更简单的模型转换为使用 @Html.DisplayForModel() 和 @Html.EditForModel() ,它的工作原理如下这是一个幸运的魅力:)
我立即发现的一件事是,我无法轻松定义一个字段以显示在显示视图上,但根本无法进行编辑......
I am reading up on ASP.NET MVC and all of it's fun uses and I just found out about DataTemplates.
In my hurry to test this thing out, I converted one of my simpler models over to using @Html.DisplayForModel()
and @Html.EditForModel()
and it worked like a lucky charm that it is :)
One thing that I immediately found out though was that I could not easily define a field to show up on display views but not be present at all for editing...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用 IMetadataAware 接口的创建属性,该属性将在元数据中设置 ShowForEdit 和 ShowForDislay:
然后您可以将其附加到您的属性,如下所示:
这就是您所需要的。
You can make use of IMetadataAware interface an create attribute which will set ShowForEdit and ShowForDislay in Metadata:
Then you can attach it to your property like this:
And this is all you need.
您可以编写自定义元数据提供程序并设置
ShowForEdit
元数据属性。因此,从自定义属性开始:然后是自定义模型元数据提供程序:
然后在
Application_Start
中注册此提供程序:最后装饰:
现在,如果在您的视图中您有:
Prop1
属性不会包含在编辑器模板中。备注:您可以对
ShowForDisplay
元数据属性执行相同的操作。You could write a custom metadata provider and set the
ShowForEdit
metadata property. So start with a custom attribute:then a custom model metadata provider:
then register this provider in
Application_Start
:and finally decorate:
Now if in your view you have:
the
Prop1
property won't be included in the editor template.Remark: you could do the same with the
ShowForDisplay
metadata property.您可以使用 Html.DisplayTextbox 或其他选项之一显示您想要的每个字段吗?这样您还可以自定义引用该字段的外观和标签。
Can you display each of the fields you want using Html.DisplayTextbox or one of the other options? That way you can also customize the appearance and labels referring to the field.