.net 使用@Html.ActionLink()时出错

.net 使用@Html.ActionLink()时出错,.net,asp.net-mvc,compiler-errors,html.actionlink,.net,Asp.net Mvc,Compiler Errors,Html.actionlink,获取错误如下 编译器错误消息:CS1973:“System.Web.Mvc.HtmlHelper”没有名为“ActionLink”的适用方法,但似乎有一个同名的扩展方法。无法动态调度扩展方法。考虑在不使用扩展方法语法的情况下强制转换动态参数或调用扩展方法。 在MVC应用程序中,我试图使用字典条目的键作为链接的链接文本,但我得到了错误 这是我遇到错误的地方…我尝试用@item.Key替换item.Key和其他各种方法 @Html.ActionLink(item.Key,"ExpandFolder"

获取错误如下

编译器错误消息: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>

    @foreach(@ViewBag.filesFolders中的变量项) { 如果(item.Value==“文件夹”) {
  • @ActionLink(item.Key,“ExpandFolder”,“Home”,new{path=item.Key},null)
  • } else if(item.Value==“文件”) {
  • } }

键入cast
项。将
键键入字符串

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

@ViewBag.filesFolders

问题就在这里。HtmlHelper返回错误描述:

无法动态调度扩展方法

您的
ViewBag.filesFolders
是动态键入的ViewBag,因此会导致问题

您应该使用强类型ViewModel(更好的是--
IEnumerable
)来显示您的
文件文件夹

另一种解决方案是将
项.Key
转换为
字符串
类型,因此它看起来像:

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

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

谢谢您的回复…@SaranSassy,不客气。如果某个答案有帮助,您可以将其标记为已接受:)非常感谢您的回答我也有同样的问题,但当我转换它时,它说无法将类型“long”转换为“string”。。你知道如何解决这个问题吗<代码>@Html.ActionLink((字符串)@item.ItemID,“Viewitem”,新的{ItemID=item.ItemID})