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是动态类型的viewbag,所以它会导致问题。

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

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

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

但正如我之前所说,我建议将来使用强类型视图模型。

于 2013-10-06T11:38:30.763 回答