Bri*_*get 4 asp.net-mvc data-annotations asp.net-mvc-3
我在我的视图中有这一行:
@Html.EditorForModel()
Run Code Online (Sandbox Code Playgroud)
这是我的ViewModel:
public class CommentForm
{
public int Id { get; set; }
[DisplayName("Kommentar"), DataType(DataType.MultilineText)]
public string Comment { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
问题是Id在表单中呈现为文本字段.实际上,我只想Id在表单中使用动作.是否有一个属性告诉编辑器不要呈现属性Id?
Geo*_*der 21
将ShowForDisplay和ShowForEdit设置为false已由标准完成
[System.ComponentModel.DataAnnotations.ScaffoldColumn(false)]
Run Code Online (Sandbox Code Playgroud)
属性.因此,您的自定义属性似乎有点矫枉过正.
Dar*_*rov 15
一种可能性是将其渲染为隐藏字段:
[HiddenInput(DisplayValue = false)]
public int Id { get; set; }
Run Code Online (Sandbox Code Playgroud)
另一种可能性是为您的CommentForm视图模型编写自定义编辑器模板,并在此模板中包含您想要的任何内容(~/Views/Shared/EditorTemplates/CommentForm.cshtml):
@model CommentForm
<div>
@Html.EditorFor(x => x.Comment)
</div>
Run Code Online (Sandbox Code Playgroud)
Bri*_*get 14
谢谢你的贡献,但我真的不喜欢他们.
我制作了自己的PreventRenderingAttribute.
PreventRenderingAttribute.cs
[AttributeUsage(AttributeTargets.Property)]
public class PreventRenderingAttribute : Attribute, IMetadataAware
{
public void OnMetadataCreated(ModelMetadata metadata)
{
metadata.ShowForDisplay = false;
metadata.ShowForEdit = false;
}
}
Run Code Online (Sandbox Code Playgroud)
并在CommentForm中
[PreventRendering]
public int Id { get; set; }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9251 次 |
| 最近记录: |