Buscar..


Introducción

Los ayudantes de HTML son métodos utilizados para representar elementos HTML en una vista. Son parte del espacio de nombres System.Web.Mvc.HtmlHelper .

Hay diferentes tipos de ayudantes de HTML:

Ayudantes HTML estándar : se utilizan para representar elementos HTML normales, por ejemplo, Html.TextBox() .

Ayudantes HTML fuertemente tipados : estos ayudantes representan elementos HTML basados ​​en las propiedades del modelo, por ejemplo, Html.TextBoxFor() .

Ayudantes HTML personalizados : el usuario puede crear un método auxiliar personalizado que devuelve MvcHtmlString .

Ayudante HTML personalizado - Nombre para mostrar

/// <summary>
/// Gets displayName from DataAnnotations attribute
/// </summary>
/// <typeparam name="TModel"></typeparam>
/// <typeparam name="TProperty"></typeparam>
/// <param name="htmlHelper"></param>
/// <param name="expression"></param>
/// <returns></returns>
public static MvcHtmlString GetDisplayName<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
{
    var metaData = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
    var value = metaData.DisplayName ?? (metaData.PropertyName ?? ExpressionHelper.GetExpressionText(expression));
    return MvcHtmlString.Create(value);
}

Ayudante personalizado - botón Enviar de envío

/// <summary>
/// Creates simple button
/// </summary>
/// <param name="poHelper"></param>
/// <param name="psValue"></param>
/// <returns></returns>
public static MvcHtmlString SubmitButton(this HtmlHelper poHelper, string psValue)
{
    return new MvcHtmlString(string.Format("<input type=\"submit\" value=\"{0}\">", psValue));
}

Lista exhaustiva de ejemplos de HtmlHelper que incluye salida HTML

HtmlHelper.Action()

  • @Html.Action(actionName: "Index")
    salida: el HTML representado por un método de acción denominado Index()
  • @Html.Action(actionName: "Index", routeValues: new {id = 1})
    salida: el HTML representado por un método de acción llamado Index(int id)
  • @(Html.Action("Index", routeValues: new RouteValueDictionary(new Dictionary<string, object>{ {"id", 1} })))
    salida: el HTML representado por un método de acción llamado Index(int id)
  • @Html.Action(actionName: "Index", controllerName: "Home")
    salida: el código HTML representado por un método de acción denominado Index() en el HomeController
  • @Html.Action(actionName: "Index", controllerName: "Home", routeValues: new {id = 1})
    salida: el HTML representado por un método de acción denominado Index(int id) en el HomeController
  • @Html.Action(actionName: "Index", controllerName: "Home", routeValues: new RouteValueDictionary(new Dictionary<string, object>{ {"id", 1} }))
    salida: el HTML representado por un método de acción denominado Index(int id) en el HomeController
  • @Html.ActionLink(linkText: "Click me", actionName: "Index")
    salida: <a href="Home/Index">Click me</a>
  • @Html.ActionLink(linkText: "Click me", actionName: "Index", routeValues: new {id = 1})
    salida: <a href="Home/Index/1">Click me</a>
  • @Html.ActionLink(linkText: "Click me", actionName: "Index", routeValues: new {id = 1}, htmlAttributes: new {@class = "btn btn-default", data_foo = "bar")
    salida: <a href="Home/Index/1" class="btn btn-default" data-foo="bar">Click me</a>
  • @Html.ActionLink()
    salida: <a href=""></a>

@HtmlHelper.BeginForm()

  • @using (Html.BeginForm("MyAction", "MyController", FormMethod.Post, new {id="form1",@class = "form-horizontal"}))
    salida: <form action="/MyController/MyAction" class="form-horizontal" id="form1" method="post">

Ayudantes HTML estándar con sus salidas HTML

Html.TextBox ()

  • @Html.TextBox("Name", null, new { @class = "form-control" })
    salida: <input class="form-control" id="Name"name="Name"type="text"value=""/>
  • @Html.TextBox("Name", "Stack Overflow", new { @class = "form-control" })
    salida: <input class="form-control" id="Name"name="Name"type="text" value="Stack Overflow"/>

Html.TextArea ()

  • @Html.TextArea("Notes", null, new { @class = "form-control" })
    salida: <textarea class="form-control" id="Notes" name="Notes" rows="2" cols="20"></textarea>
  • @Html.TextArea("Notes", "Please enter Notes", new { @class = "form-control" })
    salida: <textarea class="form-control" id="Notes" name="Notes" rows="2" cols="20" >Please enter Notes</textarea>

Html.Label ()

  • @Html.Label("Name","FirstName")
    output: <label for="Name"> FirstName </label>
  • @Html.Label("Name", "FirstName", new { @class = "NameClass" })
    output: <label for="Name" class="NameClass">FirstName</label>

Html.Hidden ()

  • @Html.Hidden("Name", "Value")
    salida: <input id="Name" name="Name" type="hidden" value="Value" />

Html.CheckBox ()

  • @Html.CheckBox("isStudent", true)
    salida: <input checked="checked" id="isStudent" name="isStudent" type="checkbox" value="true" />

Html.Password ()

  • @Html.Password("StudentPassword")
    salida: <input id="StudentPassword" name="StudentPassword" type="password" value="" />

Ayudante personalizado - Botón de radio renderizado con etiqueta

       public static MvcHtmlString RadioButtonLabelFor<TModel, TProperty>(this HtmlHelper<TModel> self, Expression<Func<TModel, TProperty>> expression, bool value, string labelText)
    {
        // Retrieve the qualified model identifier
        string name = ExpressionHelper.GetExpressionText(expression);
        string fullName = self.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(name);

        // Generate the base ID
        TagBuilder tagBuilder = new TagBuilder("input");
        tagBuilder.GenerateId(fullName);
        string idAttr = tagBuilder.Attributes["id"];

        // Create an ID specific to the boolean direction
        idAttr = string.Format("{0}_{1}", idAttr, value);

        // Create the individual HTML elements, using the generated ID
        MvcHtmlString radioButton = self.RadioButtonFor(expression, value, new { id = idAttr });
        MvcHtmlString label = self.Label(idAttr, labelText);

        return new MvcHtmlString(radioButton.ToHtmlString() + label.ToHtmlString());
    }

Ejemplo: @Html.RadioButtonLabelFor(m => m.IsActive, true, "Yes")

Ayudante personalizado - Selector de fecha y hora

public static MvcHtmlString DatePickerFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, object htmlAttributes)
{
    var sb = new StringBuilder();
    var metaData = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
    var dtpId = "dtp" + metaData.PropertyName;
    var dtp = htmlHelper.TextBoxFor(expression, htmlAttributes).ToHtmlString();
    sb.AppendFormat("<div class='input-group date' id='{0}'> {1} <span class='input-group-addon'><span class='glyphicon glyphicon-calendar'></span></span></div>", dtpId, dtp);
    return MvcHtmlString.Create(sb.ToString());
}

Ejemplo:

@Html.DatePickerFor(model => model.PublishedDate,  new { @class = "form-control" })

Si usa Bootstrap.v3.Datetimepicker, su JavaScript es como el siguiente:

$('#dtpPublishedDate').datetimepicker({ format: 'MMM DD, YYYY' });


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow