Todos los helpers html básicos devuelven un objeto del tipo System.Web.Mvc.MvcHtmlString
. Puede configurar métodos de extensión para esa clase. He aquí un ejemplo:
public static class MvcHtmlStringExtensions
{
public static MvcHtmlString If(this MvcHtmlString value, bool check)
{
if (check)
{
return value;
}
return null;
}
public static MvcHtmlString Else(this MvcHtmlString value, MvcHtmlString alternate)
{
if (value == null)
{
return alternate;
}
return value;
}
}
continuación, puede utilizar estos en una vista como:
@Html.TextBoxFor(model => model.Name)
.If(Model.Name.StartsWith("A"))
.Else(Html.TextBoxFor(model => model.LastName)
Para que los métodos de extensión que modifican los atributos en la etiqueta HTML representado, tendrá que convertir el resultado a una cadena, y encuentre y reemplace el valor que está buscando.
using System.Text.RegularExpressions;
public static MvcHtmlString Identity(this MvcHtmlString value, string id)
{
string input = value.ToString();
string pattern = @"(?<=\bid=")[^"]*";
string newValue = Regex.Replace(input, pattern, id);
return new MvcHtmlString(newValue);
}
public static MvcHtmlString Name(this MvcHtmlString value, string id)
{
string input = value.ToString();
string pattern = @"(?<=\bname=")[^"]*";
string newValue = Regex.Replace(input, pattern, id);
return new MvcHtmlString(newValue);
}
Los id
y name
atributos siempre se agregan por los ayudantes del HTML, pero si se quiere trabajar con atributos que pueden no estar allí (y usted tendrá que añadirlos en lugar de sólo la sustitución de ellos), se Necesitaremos modificar el código.