4

次のようにエラーが発生します..

コンパイラ エラー メッセージ: CS1973: 'System.Web.Mvc.HtmlHelper' には 'ActionLink' という名前の適用可能なメソッドがありませんが、その名前の拡張メソッドがあるようです。拡張メソッドは動的にディスパッチできません。動的引数をキャストするか、拡張メソッド構文を使用せずに拡張メソッドを呼び出すことを検討してください。

MVC アプリケーションで、ディクショナリ エントリのキーをリンクのリンク テキストとして使用しようとしていますが、エラーが発生します。

これはエラーが発生している行です... item.Key を @item.Key に置き換えたり、他のさまざまな方法も試してみました。

@Html.ActionLink(item.Key,"ExpandFolder","Home",new {path=item.Key },null)

ビューコード全体は次のようになります...

<form id="ViewFiles" method="post"  action="Index">
    <ul>
        @foreach (var item in @ViewBag.filesFolders)
        {
            if (item.Value == "folder")
            {
                <li>
                    @Html.ActionLink(item.Key,"ExpandFolder","Home",new {path=item.Key },null)
                </li>  
            }
            else if (item.Value == "file")
            {
                <li><a href="">FILES-@item.Key</a></li>  
            }
        }
    </ul>
</form>
4

2 に答える 2

14

item.Key文字列への型キャスト

@Html.ActionLink((string)item.Key,"ExpandFolder","Home",new {path=item.Key },null)
于 2013-10-06T11:36:13.773 に答える
6

@ViewBag.filesFolders

これが問題です。HtmlHelper はエラーの説明を返します。

拡張メソッドは動的にディスパッチできません。

あなたViewBag.filesFoldersは動的に型付けされたビューバッグであるため、問題が発生します。

あなたIEnumerable<T>filesFolders.

他の解決策は、型にキャストするitem.Keyことstringです。そのため、次のようになります。

@Html.ActionLink((string)item.Key, "ExpandFolder", "Home", new {path=item.Key }, null)

しかし、前にも言ったように、今後は強く型付けされたビュー モデルを使用することをお勧めします。

于 2013-10-06T11:38:30.763 に答える