首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MVC6替代@Html.DisplayFor

MVC6替代@Html.DisplayFor
EN

Stack Overflow用户
提问于 2015-09-19 18:10:53
回答 3查看 12.5K关注 0票数 24

MVC6引入了标记帮助器,这是一种比使用@Html.EditorFor更好的方法,等等。但是我还没有发现任何标记助手可以替代@Html.DisplayFor。

当然,我可以直接在Razor页面上使用变量,比如@Model.BookingCode。但这不允许控制格式设置。

对于MVC6,在概念上显示模型属性值的正确方法是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-29 11:40:36

您可以创建自己的标记助手。

代码语言:javascript
运行
复制
namespace MyDemo.TagHelpers
{
    [HtmlTargetElement("p", Attributes = ForAttributeName)]
    public class DisplayForTagHelper : TagHelper
    {
        private const string ForAttributeName = "asp-for";

        [HtmlAttributeName(ForAttributeName)]
        public ModelExpression For { get; set; }

        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (output == null)
            {
                throw new ArgumentNullException(nameof(output));
            }

            var text = For.ModelExplorer.GetSimpleDisplayText();

            output.Content.SetContent(text);
        }
    }
}

添加在视图中使用它:

代码语言:javascript
运行
复制
<p asp-for="MyProperty" class="form-control-static"></p>
票数 10
EN

Stack Overflow用户

发布于 2015-09-19 19:00:09

@Html.DisplayFor仍然存在并且仍然可以使用。

HtmlHelpers和TagHelpers的区别在于,HtmlHelpers为您选择要呈现哪些html元素,而TagHelpers则使用您自己添加的html标记,因此您可以更完全地控制使用什么html元素。您确实可以通过HtmlHelpers使用模板来控制标记,但是您可以更多地控制TagHelpers。

因此,您应该考虑如何使用html标记,我希望将这个模型属性封装在其中,并使用@Model.Property将属性周围的标记添加到属性周围,或者继续使用DisplayFor,如果您希望由助手来决定的话。

票数 13
EN

Stack Overflow用户

发布于 2018-12-09 19:52:52

代码语言:javascript
运行
复制
try below code

public class movie
{
    public int ID { get; set; }
    [DisplayName("Movie Title")]
    public string Title { get; set; }
}
///////////////////////////////////////////////////

@model IEnumerable<MvcMovie.Models.Movie>

<h1>Show List Movies</h1>
<label asp-for="ToList()[0].Title">< /label>
@foreach (var movie in Model)
{
    @movie.Title
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32671644

复制
相关文章

相似问题

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