I am using a number of editor templates for different datatypes (string, DateTime, etc.) in my ASP.NET MVC application. For instance, the following is what I am using for strings:
<div class="editor-label">
@Html.Label("")
</div>
<div class="editor-field">
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "text", placeholder = ViewData.ModelMetadata.Watermark })
@Html.ValidationMessage("")
</div>
I would like to use EditorForModel within my views but when I do so it appears to add it's own label for each property resulting in duplicate labels (because I have a label in my string editor template). Is there any way, other than removing the label from my string editortemplate (in this example) that I can tell editorformodel not to insert a label?
One possibility is to override the default object editor template (~/Views/Shared/EditorTemplates/Object.cshtml
) and remove the label it adds:
@if (ViewData.TemplateInfo.TemplateDepth > 1)
{
@ViewData.ModelMetadata.SimpleDisplayText
}
else
{
foreach (var prop in ViewData.ModelMetadata.Properties.Where(pm => pm.ShowForEdit && !ViewData.TemplateInfo.Visited(pm)))
{
if (prop.HideSurroundingHtml)
{
@Html.Editor(prop.PropertyName)
}
else
{
<div class="editor-field">
@Html.Editor(prop.PropertyName)
@Html.ValidationMessage(prop.PropertyName)
</div>
}
}
}