2011-01-04 28 views
10

Estoy siguiendo el tutorial de MVC Music Store, pero me he quedado un poco atascado con Html Helper en la parte 5: Part 5.Los tipos estáticos no se pueden usar como parámetros

que parecen haber seguido correctamente hasta el momento (por favor, corríjanme si me equivoco :)) ... Sin embargo, estoy consiguiendo el error siguiente:

'musicStoreMVC.Helpers.HtmlHelper': static types cannot be used as parameters

Aquí está el código de mi solicitud :

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace musicStoreMVC.Helpers 
{ 
    public static class HtmlHelper 
    { 
     public static string Truncate(this HtmlHelper helper, string input, int length) 
     { 
      if (input.Length <= length) 
      { 
       return input; 
      } 
      else 
      { 
       return input.Substring(0, length) + "..."; 
      } 
     } 
    } 
} 

Si alguien puede ver lo que estoy haciendo mal, o si se necesita más información, estaría agradecido por los punteros !! Gracias.

+0

Gracias a todos los que respondieron! ¡Los nombres eran muy similares! :) – 109221793

+0

http://stackoverflow.com/questions/5858591/c-sharp-static-types-cannot-be-used-as-type-arguments –

Respuesta

13

Simplemente cambie el nombre de su clase estática HtmlHelper a HtmlHelperExtensions.

+1

Mismo problema, pero no funciona para mí. Quiero extender 'Microsoft.VisualStudio.TestTools.UnitTesting.Assert'. Cambiar el nombre de clase a cualquier cosa también produce el mismo error ... – CallMeLaNN

+3

Lo tengo, porque los métodos de extensión no se pueden agregar a 'static class' http://stackoverflow.com/questions/249222/can-i-add-extension-methods -to-a-existing-static-class – CallMeLaNN

1

Tiene un conflicto de nombres, el estático HtmlHelper que declara en el código de ejemplo y el System.Web.Mvc.HtmlHelper que es la clase para la que realmente desea crear el método de extensión. Simplemente cambie el nombre de su clase al HtmlHelpers (como se encuentra en el tutorial vinculado). Tal como está ahora, estás intentando implementar un método de extensión en la clase estática que supuestamente no funciona.

1

Es porque está nombrando su clase de extensión HtmlHelper. En truncate, intente agregar un método de extensión a una clase estática, que no puede.

Una solución simple es cambiar el nombre de su HtmlHelper a algo diferente.

1

El this HtmlHelper helper dice que Truncate() debe actuar como si se tratara de un método de instancia en HtmlHelper, pero se ha declarado HtmlHelper como una clase estática, que no puede tener instancias.

Si lo que estás tratando de hacer es crear un método de extensión en una clase diferente HtmlHelper, entonces como otros han sugerido, renombra esta clase estática. Si solo necesita el método estático, elimine el parámetro this HtmlHelper helper. No lo estás usando de todos modos.

0

Eliminar el uso de parte

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

y añadir

using System.Web.Mvc; 
Cuestiones relacionadas