【问题标题】:What is use of UIHint attribute in MVC [duplicate]MVC中UIHint属性的用途是什么[重复]
【发布时间】:2011-11-19 18:48:09
【问题描述】:

谁能解释一下 MVC 中 UIHint 属性的用途。我们为什么需要这个。以及何时以及如何使用。谢谢

【问题讨论】:

  • 到目前为止,您读到了什么令人困惑的内容?你试过什么?这不是询问文档中已有信息的好地方。
  • UIHint 是一个非常重要的功能,遗憾的是,这方面的文档很差,互联网上也没有太多清晰的文章或示例。

标签: .net asp.net-mvc data-annotations asp.net-mvc-uihint


【解决方案1】:

UIHintAttribute 指定动态数据用于显示数据字段的模板或用户控件。

这是 UIHintAttribute 的 MSDN 描述。它最初是针对动态数据应用程序引入的,ASP.NET MVC 也对其进行了改编。

如果您使用 UIHint 属性注释属性并在视图中使用EditorForDisplayFor,ASP.NET MVC 框架将查找您通过UIHintAttribute 指定的指定模板。它寻找的目录是:

对于EditorFor

~/Views/Shared/EditorTemplates

~/Views/Controller_Name/EditorTemplates

对于DisplayFor

~/Views/Shared/DisplayTemplates

~/Views/Controller_Name/DisplayTemplates

如果你在一个区域,它也适用于你的区域,就像上面一样。

这是使用示例:

public class Person { 

    [UIHint("Poo")]
    public string Name { get; set; }
}

如果您尝试使用EditorForDisplayFor 输出模型属性,MVC 框架将在指定目录下查找名为poo 的局部视图,如下所示:

@model MyApp.Models.Person

<h2>My Person</h2>

@Html.DisplayFor(m => m.Name)

【讨论】:

  • 最后不应该是@Html.DisplayFor(m =&gt; m.Name)吗?
  • 您能否提供一个示例来说明如何创建“便便”显示模板?
  • 是的,请演示如何创建便便:J
  • poo.cshtml 的内容:@model string @{ @Model }
  • Name 属性是 string。默认情况下,@Html.EditorFor(m =&gt; m.Name) 会查找 string 编辑器。要插入自定义局部视图编辑器,例如 Views/Shared/EditorTemplates/Name.cshtml,有两个选项:@Html.EditorFor(m =&gt; m.Name, "Name")[UIHint("Name")] public string Name { get; set; }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-14
  • 2019-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多