using System;
using System.Collections.Generic;
using System.Linq.Expressions;
namespace Microsoft.AspNet.Mvc.Rendering
{
///
/// An for Linq expressions.
///
/// The of the model.
public interface IHtmlHelper : IHtmlHelper
{
///
/// Gets the current view data.
///
new ViewDataDictionary ViewData { get; }
///
/// Render an input element of type "checkbox" with value "true" and an input element of type "hidden" with
/// value "false".
///
///
/// An expression that identifies the object that contains the properties to render.
///
/// An object that contains the HTML attributes to set for the element.
/// Alternatively, an instance containing the HTML attributes.
///
/// New containing the rendered HTML.
HtmlString CheckBoxFor([NotNull] Expression> expression, object htmlAttributes);
///
/// Returns HTML markup for each property in the object that is represented by the specified expression, using
/// the template, an HTML field ID, and additional view data.
///
/// The type of the value.
/// An expression that identifies the object that contains the properties to display.
///
/// The name of the template that is used to render the object.
///
/// A string that is used to disambiguate the names of HTML input elements that are rendered for properties
/// that have the same name.
///
///
/// An anonymous object or dictionary that can contain additional view data that will be merged into the
/// instance that is created for the template.
///
/// The HTML markup for each property in the object that is represented by the expression.
HtmlString DisplayFor([NotNull] Expression> expression,
string templateName,
string htmlFieldName,
object additionalViewData);
///
/// Gets the display name for the model.
///
/// An expression that identifies the object that contains the display name.
/// The type of the value.
///
/// The display name for the model.
///
HtmlString DisplayNameFor([NotNull] Expression> expression);
///
/// Gets the display name for the inner model if the current model represents a collection.
///
/// The type of the inner model
/// The type of the value.
/// An expression that identifies the object that contains the display name.
/// The display name for the inner model.
HtmlString DisplayNameForInnerType(
[NotNull] Expression> expression);
///
/// Returns the HtmlString corresponding to the expression specified.
///
///
/// The expression identifies the object for which the HtmlString should be returned.
///
///
/// New containing the display text. If the value is null,
/// then it returns the ModelMetadata.NullDisplayText.
///
HtmlString DisplayTextFor([NotNull] Expression> expression);
///
/// Returns a single-selection HTML {select} element for the object that is represented
/// by the specified expression using the specified list items, option label, and HTML attributes.
///
/// The type of the value.
/// An expression that identifies the value to display.
/// A collection of objects that are used to populate the
/// drop-down list.
/// The text for a default empty item. This parameter can be null.
/// An object that contains the HTML attributes to set for the {select} element.
/// Alternatively, an instance containing the HTML attributes.
///
/// An HTML {select} element with an {option} subelement for each item in the list.
HtmlString DropDownListFor(
[NotNull] Expression> expression,
IEnumerable selectList,
string optionLabel,
object htmlAttributes);
///
/// Returns an HTML input element for each property in the object that is represented by the specified
/// expression, using the specified template, an HTML field ID, and additional view data.
///
/// The type of the value.
/// An expression that identifies the object that contains the properties to edit.
///
/// The name of the template that is used to render the object.
///
/// A string that is used to disambiguate the names of HTML input elements that are rendered for properties
/// that have the same name.
///
///
/// An anonymous object or dictionary that can contain additional view data that will be merged into the
/// instance that is created for the template.
///
/// The HTML markup for the input elements for each property in the object that is represented by the
/// expression.
HtmlString EditorFor([NotNull] Expression> expression,
string templateName,
string htmlFieldName,
object additionalViewData);
///
/// Render an input element of type "hidden".
///
///
/// An expression that identifies the object that contains the properties to render.
///
/// An object that contains the HTML attributes to set for the element.
/// Alternatively, an instance containing the HTML attributes.
///
/// New containing the rendered HTML.
HtmlString HiddenFor([NotNull] Expression> expression,
object htmlAttributes);
///
/// Gets the Id of the given expression.
///
/// The expression identifies the object for which the Id should be returned.
/// New containing the Id.
HtmlString IdFor([NotNull] Expression> expression);
///
/// Returns an HTML label element and the property name of the property that is represented by the specified
/// expression.
///
/// An expression that identifies the property to display.
/// An object that contains the HTML attributes to set for the element.
/// The type of the value.
///
/// An HTML label element and the property name of the property that is represented by the expression.
///
HtmlString LabelFor([NotNull] Expression> expression,
string labelText,
object htmlAttributes);
///
/// Gets the full HTML field name for the given .
///
/// The the returns.
/// An expression, relative to the current model.
/// An that represents HTML markup.
HtmlString NameFor([NotNull] Expression> expression);
///
/// Render an input element of type "password".
///
///
/// An expression that identifies the object that contains the properties to render.
///
/// An object that contains the HTML attributes to set for the element.
/// Alternatively, an instance containing the HTML attributes.
///
/// New containing the rendered HTML.
HtmlString PasswordFor([NotNull] Expression> expression,
object htmlAttributes);
///
/// Render an input element of type "radio".
///
///
/// An expression that identifies the object that contains the properties to render.
///
///
/// If non-null, value to compare with current expression value to determine whether radio button is
/// checked.
///
/// An object that contains the HTML attributes to set for the element.
/// Alternatively, an instance containing the HTML attributes.
///
/// New containing the rendered HTML.
HtmlString RadioButtonFor([NotNull] Expression> expression, object value,
object htmlAttributes);
///
/// Render a textarea.
///
/// An expression, relative to the current model.
/// Number of rows in the textarea.
/// Number of columns in the textarea.
///
/// containing additional HTML attributes.
///
/// New containing the rendered HTML.
HtmlString TextAreaFor([NotNull] Expression> expression,
int rows, int columns, object htmlAttributes);
///
/// Render an input element of type "text".
///
///
/// An expression that identifies the object that contains the properties to render.
///
///
///
/// containing additional HTML attributes.
///
/// New containing the rendered HTML.
HtmlString TextBoxFor([NotNull] Expression> expression, string format,
IDictionary htmlAttributes);
///
/// Returns the model value for the given expression .
///
/// An expression, relative to the current model.
/// The optional format string to apply to the value.
/// An that represents HTML markup.
HtmlString ValueFor([NotNull] Expression> expression, string format);
}
}