Asp.net mvc MVC 3:使用EditorForModel隐藏ID属性
我的观点是:Asp.net mvc MVC 3:使用EditorForModel隐藏ID属性,asp.net-mvc,asp.net-mvc-3,data-annotations,Asp.net Mvc,Asp.net Mvc 3,Data Annotations,我的观点是: @Html.EditorForModel() 这是我的ViewModel: public class CommentForm { public int Id { get; set; } [DisplayName("Kommentar"), DataType(DataType.MultilineText)] public string Comment { get; set; } } 问题是Id在表单中呈现为文本字段。实际上,我只想在表单操作中使用Id。是
@Html.EditorForModel()
这是我的ViewModel:
public class CommentForm
{
public int Id { get; set; }
[DisplayName("Kommentar"), DataType(DataType.MultilineText)]
public string Comment { get; set; }
}
问题是
Id
在表单中呈现为文本字段。实际上,我只想在表单操作中使用Id
。是否有一个属性告诉编辑器不要渲染属性Id
?一种可能是将其渲染为隐藏字段:
[HiddenInput(DisplayValue = false)]
public int Id { get; set; }
另一种可能是为您的CommentForm
视图模型编写自定义编辑器模板,并在该模板中包含您想要的任何内容(~/Views/Shared/EditorTemplates/CommentForm.cshtml
):
@model-CommentForm
@EditorFor(x=>x.Comment)
谢谢你的贡献,但我真的不喜欢它们
我创建了自己的PreventRenderingAttribute
PreventRenderingAttribute.cs
[AttributeUsage(AttributeTargets.Property)]
public class PreventRenderingAttribute : Attribute, IMetadataAware
{
public void OnMetadataCreated(ModelMetadata metadata)
{
metadata.ShowForDisplay = false;
metadata.ShowForEdit = false;
}
}
并以评论的形式
[PreventRendering]
public int Id { get; set; }
标准已将ShowForDisplay和ShowForEdit设置为false
[System.ComponentModel.DataAnnotations.ScaffoldColumn(false)]
属性。
因此,您的自定义属性似乎有些过分。干得好;)我删除我的答案,并投你的一票。如果没有,我们有两个内容相同的答案。我通过创建自己的属性解决了这个问题,但是我在接下来的7个小时内无法回答我的问题:/简言之,我做了如下操作:
[System.ComponentModel.DataAnnotations.ScaffoldColumn(false)]