0

我的模型有一些创建视图和一些索引视图,但我想要不同的标签(从数据注释生成)。

例如

我想@Html.DisplayNameFor(model => model.Url)打印“页面 URL”之类的内容,因为这是索引页面上我的表格的标题...

我想@Html.LabelFor(modelItem => item.Url)打印类似“输入页面网址”的内容,因为它是用于创建视图的。

我试过查看注释,但我能找到的唯一属性似乎同时设置了:

    [DisplayName("Page Url")]
    public string Url { get; set; }

有没有办法(除了直接输入我的视图)做我想做的事?

4

1 回答 1

2

使用 Display 属性而不是 DisplayName,如下所示:

[Display(Name = "Page Url", Description = "Enter page Url")]
public string Url { get; set; }

然后,创建这个 HtmlHelper:

public static MvcHtmlString DescriptionFor<TModel, TValue>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TValue>> expression)
{
    var metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
    var description = metadata.Description;

    TagBuilder tagBuilder = new TagBuilder("span");
    tagBuilder.SetInnerText(description);
    return new MvcHtmlString(tagBuilder.ToString(TagRenderMode.Normal));
}

并且,像这样在您的视图中使用它(用于描述):

@Html.DescriptionFor(model => model.Url)

并且,对于名称:

@Html.LabelFor(model => model.Url)
于 2013-07-12T13:51:06.973 回答