获取以下错误..
编译器错误消息: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>
答案 0 :(得分:12)
将字符item.Key
输入字符串
@Html.ActionLink((string)item.Key,"ExpandFolder","Home",new {path=item.Key },null)
答案 1 :(得分:6)
@ViewBag.filesFolders
这是问题所在。 HtmlHelper返回错误描述:
无法动态调度扩展方法。
您的ViewBag.filesFolders
是动态类型的视图包,因此会导致问题。
您应该使用强类型的ViewModel(以及更好的IEnumerable<T>
)来展示您的filesFolders
。
其他解决方案是将您的item.Key
转换为string
类型,因此它将如下所示:
@Html.ActionLink((string)item.Key, "ExpandFolder", "Home", new {path=item.Key }, null)
但正如我之前所说,我建议将来使用强类型的View模型。