DynamicControl.UIHint Property


The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

Gets or sets the name of the field template that is used to render the data field.

Namespace:   System.Web.DynamicData
Assembly:  System.Web.DynamicData (in System.Web.DynamicData.dll)

public virtual string UIHint { get; set; }

Property Value

Type: System.String

The name of the field template that is used to render the data field. The default is an empty string (""), which indicates that the field template will be rendered based on the data field type or on metadata information applied to the data model.

Use the UIHint property to specify the field template to use to display the UI for a data field. Field templates by default are user controls and their names contain a suffix to identify field templates that are used for edit operations and insert operations. The suffixes are _edit and _insert, respectively. When you set a value to the UIHint property, you set the name without the suffixes. Dynamic Data will identify the correct mode by evaluating the Mode property value and will render the correct field template.

If the UIHint property is not set, by default Dynamic Data will render the field template based on the field type. For more information, see ASP.NET Dynamic Data Scaffolding.

The field template that you specify using the UIHint property is specific to this instance of the DynamicControl control. You can also change the field template used by a data field across the entire application by applying the UIHintAttribute to your data model. Setting the UIHint property overrides the metadata applied to the data model. For more information about metadata attributes, see ASP.NET Dynamic Data.

See a run-time code example of this feature: Run.

The following example shows how you can specify a data field to use a different field template to render its contents. The second example shows the custom field template specified by the UIHint property.

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
  protected void Page_Init(object sender, EventArgs e)

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <title>DynamicControl.UIHint Sample</title>
    <form id="form1" runat="server">
      <asp:DynamicDataManager ID="DynamicDataManager1" runat="server"
        AutoLoadForeignKeys="true" />

      <asp:Repeater ID="Repeater1" runat="server" DataSourceID="LinqDataSource1">
          <table border="1">
               <th>First Name</th>
               <th>Last Name</th>
            <td><asp:DynamicControl runat="server" DataField="FirstName" /></td>
            <td><asp:DynamicControl runat="server" DataField="LastName" /></td>
            <td><asp:DynamicControl runat="server" DataField="EmailAddress" UIHint="Email" />&nbsp;</td>

      <asp:LinqDataSource ID="LinqDataSource1" runat="server" 
<%@ Control Language="C#" ClassName="Email" Inherits="System.Web.DynamicData.FieldTemplateUserControl"%>

<script runat="server">
  protected string GetNavigateUrl()
    if (!String.IsNullOrEmpty(FieldValueString))
      return "mailto:" + FieldValueString;

    return string.Empty;

<asp:HyperLink ID="EmailAddressLink" runat="server"
    Text="<%# FieldValueString %>"
    NavigateUrl="<%# GetNavigateUrl() %>"  />

.NET Framework
Available since 3.5
Return to top