【问题标题】:Displaying entities data with EditorForModel使用 EditorForModel 显示实体数据
【发布时间】:2013-05-01 14:59:36
【问题描述】:

我有数据填充的枚举器发送到视图,我像这样渲染 EditorForModel:

@model IEnumerable<TestProj.Models.Hours>
@Html.EditorForModel()

比EditorTemplates.Hours.cshtml中的:

@model TestProj.Models.Hours
<div>
@Html.CheckBoxFor(
    x => x.Selected, 
    new { 
        @class = "jcf-unselectable",
        id = HtmlHelper.GenerateIdFromName("cb_slice." + ViewData.TemplateInfo.GetFullHtmlFieldName(""))
    }
)
@Html.LabelFor(x => x.SliceName)
</div>

当页面呈现时,我想显示所有 SliceNames 数据,而不是标签显示的实体名称“SliceName”。

因此它将呈现复选框以及带有 SliceName 后面数据的标签。

我正在尝试这个选项,因为我知道不推荐使用带有循环的视图袋,但是我也希望在 EditorForModel 范围后面提出建议。

编辑: 如果我使用:

@Html.DisplayTextFor(x => x.SliceName)

-Ill 获取 SliceName 后面的数据(仅限文本)。

如果我使用:

@Html.LabelFor(x => x.SliceName)

-我会得到标签文本的标题“SliceName”。

如何使用@Html.LabelFor 以文本形式获取数据,例如@Html.DisplayTextFor?

【问题讨论】:

    标签: asp.net-mvc entity-framework razor


    【解决方案1】:

    听起来您的表单可能有问题。

    如果你这样做:

    @Html.BeginForm()
    {
    ...
    }
    

    而不是这个:

    @using(Html.BeginForm())
    {
    ...
    }
    

    您的模型的名称将出现,而不是模型的值。

    【讨论】:

    • 在我的布局中,我正在渲染主体“@RenderBody()”,这将在页面的主要区域使用 EditorForModel 渲染该区域,我什至没有 @Html。 BeginForm() 或 @using(Html.BeginForm()) ,我尝试将它放在我的正文页面中(仅此示例所需的部分):@using(Html.BeginForm("Search_Times", "Search") ) { @model IEnumerable @Html.EditorForModel() } 仍然呈现标题而不是数据。
    • @Html.DisplayTextFor(x => x.SliceName) 例如,将显示 "SliceName" 后面的数据,但它不是 "Label" 并且不能接受更多参数来格式化元素。
    • 我想我现在明白你的问题了。 @Html.LabelFor 不起作用,因为它用于显示标签。你试过@Html.DisplayFor() 吗?
    • 对象必须呈现为标签,以匹配作为项目指南的一部分提供给我的 css。
    • 基本上 @Html.LabelFor() 不会做你需要的,所以你需要找到一个替代品。幸运的是,我认为会有一些简单的解决方法。 HTML 在渲染时需要看起来像什么?
    猜你喜欢
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多