首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC3编辑器模板似乎不尊重HiddenInput

MVC3编辑器模板似乎不尊重HiddenInput
EN

Stack Overflow用户
提问于 2012-01-31 01:15:05
回答 2查看 1.2K关注 0票数 1

在Brad Wilson关于using and customizing editor templates的优秀系列文章之后,我尝试在Shared\EditorTemplates文件夹中添加一个Object.cshtml。模板会呈现,但模型属性上的[HiddenInput(DisplayValue = false)]不会像预期那样呈现隐藏的<input type="hidden" ... />。使用[HiddenInput(DisplayValue = true)]可以按预期呈现隐藏元素和可见元素。

我已经验证了Object的默认模板工作正常,并呈现了隐藏的输入。只有在基于上面的Brad系列构建自定义模板时才会有问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-31 01:48:57

看起来有些东西变了。查看MVC3源代码,我发现prop.HideSurroundingHtml用于确定何时打印周围的HTML,而不仅仅是打印隐藏的元素。以下模板允许为对象图呈现多个级别的编辑器:

代码语言:javascript
复制
@if (ViewData.TemplateInfo.TemplateDepth > 2)
{
    @(ViewData.ModelMetadata.Model != null ?
        ViewData.ModelMetadata.SimpleDisplayText :
        ViewData.ModelMetadata.NullDisplayText)
}
else
{
    foreach (var prop in ViewData.ModelMetadata.Properties.Where(pm => pm.ShowForEdit && !ViewData.TemplateInfo.Visited(pm)))
    {
        if (!prop.HideSurroundingHtml)
        {
            if (!String.IsNullOrEmpty(Html.Label(prop.PropertyName).ToHtmlString()))
            {
                <div class="editor-label">@Html.Label(prop.PropertyName)</div>
            }
            @Html.Raw("<div class=\"editor-field\">")
        }
        @Html.Editor(prop.PropertyName)
        if (!prop.HideSurroundingHtml)
        {
            @Html.ValidationMessage(prop.PropertyName, "*")
            @Html.Raw("</div>")
        }
    }
}
票数 1
EN

Stack Overflow用户

发布于 2014-08-20 11:38:36

我整理了一下我的版本,供关心的人参考:

代码语言:javascript
复制
@foreach (var modelMetadata in ViewData.ModelMetadata.Properties)
{
    if (modelMetadata.HideSurroundingHtml == false)
    {
        if (!string.IsNullOrEmpty(Html.Label(modelMetadata.PropertyName).ToHtmlString()))
        {
            <div class="editor-label">
                @Html.Label(modelMetadata.PropertyName)
            </div>
        }

        <div class="editor-field">
            @Html.Editor(modelMetadata.PropertyName)
        </div>
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9067860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档