2011-01-04 14 views
10

私はMVC Music Storeのチュートリアルに従っていますが、パート5のHtmlヘルパーでちょっと詰まっています:Part 5静的型はパラメータとして使用できません

私は、しかし、私は次のエラーを取得しています...(私が間違っている場合:)私を修正してください)今のところ、それを正しく従っているように見える:ここ

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

が自分のアプリケーションからのコードです:

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) + "..."; 
      } 
     } 
    } 
} 

誰もが私が間違ってやっているかを見ることができればより多くの情報が必要な場合、または、私はポインタに感謝するだろう!ありがとう。

+0

感謝を追加します!名前はあまりにも似ていた! :) – 109221793

+0

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

答えて

13

静的HtmlHelperクラスの名前をHtmlHelperExtensionsに変更してください。

+1

同じ問題が発生しています。私は 'Microsoft.VisualStudio.TestTools.UnitTesting.Assert'を拡張したいと思います。クラス名を何かに変更すると、同じエラーが発生します... – CallMeLaNN

+3

これは、静的クラスに拡張メソッドを追加できないためです。http://stackoverflow.com/questions/249222/can-i-add-extension-methods既存静的クラス – CallMeLaNN

1

名前の競合があります。これは、例のコードで宣言したHtmlHelperの静的なものと、実際に拡張メソッドを作成するクラスのSystem.Web.Mvc.HtmlHelperです。クラス名をHtmlHelpersに変更するだけです(リンクされたチュートリアルのとおり)。今のところ、あなたはおそらく動作しない静的クラスの拡張メソッドを実装しようとしています。

1

拡張クラスHtmlHelperの名前を付けているからです。 truncateでは、静的クラスに拡張メソッドを追加しようとしますが、できません。

簡単な解決方法は、HtmlHelperの名前を別のものに変更することです。

1

Truncate()HtmlHelperのインスタンスメソッドであるかのように動作しますが、HtmlHelperはインスタンスを持つことができない静的クラスとして宣言しています。

あなたがしようとしているのは、別のHtmlHelperクラスに拡張メソッドを作成する場合、他の人が示唆しているように、この静的クラスの名前を変更します。静的メソッドが必要な場合は、this HtmlHelper helperパラメータを削除してください。あなたはとにかくそれを使用していない。

0

は、使用して一部

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

を削除し、答えみんなに

using System.Web.Mvc; 
関連する問題