使用@ Html.ActionLink()时出错

Sar*_*ara 4 .net asp.net-mvc compiler-errors html.actionlink

得到以下错误..

编译器错误消息:CS1973:'System.Web.Mvc.HtmlHelper'没有名为'ActionLink'的适用方法,但似乎有一个名称的扩展方法.无法动态分派扩展方法.考虑转换动态参数或调用扩展方法而不使用扩展方法语法.

在MVC应用程序中,我试图使用字典条目的键作为链接的链接文本,但我得到错误.

这是我遇到错误的行......我尝试用@ item.Key和其他各种方法替换item.Key.

@Html.ActionLink(item.Key,"ExpandFolder","Home",new {path=item.Key },null)
Run Code Online (Sandbox Code Playgroud)

我的整个视图代码看起来像这样......

<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>
Run Code Online (Sandbox Code Playgroud)

Sat*_*pal 13

键入cast item.Keyto string

@Html.ActionLink((string)item.Key,"ExpandFolder","Home",new {path=item.Key },null)
Run Code Online (Sandbox Code Playgroud)


who*_*oah 6

@ViewBag.filesFolders

这是问题所在.HtmlHelper返回错误描述:

无法动态分派扩展方法.

ViewBag.filesFolders是动态类型的viewbag,所以它会导致问题.

你应该使用强类型的ViewModel(以及更好的 - IEnumerable<T>)来展示你的filesFolders.

其他解决方案是将您转换item.Keystring类型,因此它看起来像:

@Html.ActionLink((string)item.Key, "ExpandFolder", "Home", new {path=item.Key }, null)
Run Code Online (Sandbox Code Playgroud)

但正如我之前所说,我建议将来使用强类型的View Models.