[Habilitar intellisense en el atributo HTMLHelper para clases css]
Tengo este HTMLhelper:
public IHtmlString MyTextBoxFor<TModel, TProperty>(
this HtmlHelper<TModel> html,
Expression<Func<TModel, TProperty>> propertyExpression,
string cssClass)
{
// ...
}
Quiero que Resharper me proporcione IntelliSense para las clases CSS definidas en mi aplicación al pasar el valor del parámetro "cssClass".
Hay algunos atributos de anotación de código que reconoce Resharper, pero ninguno que parezca estar directamente relacionado con marcar un parámetro de método como clases CSS.
Lo más cercano que pude encontrar fue [HtmlAttributeValue (nombre de cadena)] . Traté de aplicar al parámetro cssClass así:
public IHtmlString MyTextBoxFor<TModel, TProperty>(
this HtmlHelper<TModel> html,
Expression<Func<TModel, TProperty>> propertyExpression,
[HtmlAttributeValue("class")] string cssClass)
{
// ...
}
Pero eso no funciona. También sería increíble si Resharper reconociera la clase ingresada y dejara de molestarme sobre clases CSS desconocidas en las expresiones del selector de jQuery (que operan en el cuadro de texto generado por el asistente anterior).
Editar: Aquí hay una captura de pantalla del tipo de intellisense que funciona para el parámetro "htmlAttributes" de un método de acción. Esto se logra mediante el uso de la anotación [HtmlElementAttributes] en el parámetro.
Quiero una anotación similar que me permita poner clases css en un parámetro de cadena y hacer que aparezca el mismo intellisense mostrando las clases css.
fuente
Respuestas:
Utilice [ValueProvider]
De las anotaciones de código que actualmente admite Resharper 10, el mejor candidato sería utilizar este atributo. Desde el enlace de arriba:
Desafortunadamente, no he descubierto cómo funciona. Tal vez tenga errores en mi Resharper versión 9.2.
Lo que he probado hasta ahora:
Incluso si lo hace funcionar, aún tendrá que completar la lista de Valores.
Y, por supuesto, aún puede desarrollar su anotación / extensión de código para Resharper.
¿Por qué no utilizar un objeto de tipo fuerte en lugar de una cadena?
A veces, en lugar de usar
string
yint
, podríamos usar clases con tipos más fuertes de nuestro propio diseño. Como parece que controlas tu código, puedes en lugar de usarlostring
con un nombre css, puedes crear un nuevo tipo comoCssClass
.Solo necesita agregar como evento prediseñado una llamada a un generador que analiza cada CSS en el proyecto y crea dinámicamente una clase como esa:
y luego su muestra se verá así:
fuente