Compartilhar via


EditorExtensions.EditorFor<TModel, TValue> Method (HtmlHelper<TModel>, Expression<Func<TModel, TValue>>, String, String, Object)

Returns an HTML input element for each property in the object that is represented by the expression, using the specified template, HTML field name, and additional view data.

Namespace:  System.Web.Mvc.Html
Assembly:  System.Web.Mvc (in System.Web.Mvc.dll)

Syntax

'Declaration
<ExtensionAttribute> _
Public Shared Function EditorFor(Of TModel, TValue) ( _
    html As HtmlHelper(Of TModel), _
    expression As Expression(Of Func(Of TModel, TValue)), _
    templateName As String, _
    htmlFieldName As String, _
    additionalViewData As Object _
) As MvcHtmlString
public static MvcHtmlString EditorFor<TModel, TValue>(
    this HtmlHelper<TModel> html,
    Expression<Func<TModel, TValue>> expression,
    string templateName,
    string htmlFieldName,
    Object additionalViewData
)
[ExtensionAttribute]
public:
generic<typename TModel, typename TValue>
static MvcHtmlString^ EditorFor(
    HtmlHelper<TModel>^ html, 
    Expression<Func<TModel, TValue>^>^ expression, 
    String^ templateName, 
    String^ htmlFieldName, 
    Object^ additionalViewData
)

Type Parameters

  • TModel
    The type of the model.
  • TValue
    The type of the value.

Parameters

  • templateName
    Type: System.String
    The name of the template to use to render the object.
  • htmlFieldName
    Type: System.String
    A string that is used to disambiguate the names of HTML input elements that are rendered for properties that have the same name.
  • additionalViewData
    Type: System.Object
    An anonymous object that can contain additional view data that will be merged into the ViewDataDictionary<TModel> instance that is created for the template.

Return Value

Type: System.Web.Mvc.MvcHtmlString
An HTML input element for each property in the object that is represented by the expression.

Usage Note

In Visual Basic and C#, you can call this method as an instance method on any object of type HtmlHelper<TModel>. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).

Remarks

The htmlFieldName parameter is provided for the case in which all the following are true:

  • A page contains multiple objects to be edited.

  • The action method model binds each object separately.

  • The objects have at least one property that has the same name.

If a template whose name matches the templateName parameter is found in the controller's EditorTemplates folder, that template is used to render the expression. If a template is not found in the controller's EditorTemplates folder, the Views\Shared\EditorTemplates folder is searched for a template that matches the name of the templateName parameter. If no template is found, the default template is used.

This method generates different HTML markup depending on the data type of the property that is being rendered, and according to whether the property is marked with certain attributes. The method renders markup according to the following rules:

  • If the property is typed as a primitive type (integer, string, and so on), the method renders an HTML input element for a text box. For example, a property named Height that is typed as a integer might render markup such as the following:

    <input class="text-box single-line"

    id="Height"

    name="Height"

    type="text"

    value="68"

    />

  • If a property is marked with a data-type attribute or a UIHintAttribute attribute, the attribute specifies the markup that is generated for the property. For example, if the property is marked with the MultilineText attribute, the method generates markup for a multi-line text box.

  • If the object contains multiple properties, for each property, the method generates a string that consists of markup for the property name and an input element to modify the property value.

See Also

Reference

EditorExtensions Class

EditorFor Overload

System.Web.Mvc.Html Namespace