2013-10-06 26 views
1

获取错误如下..同时使用获取错误@ Html.ActionLink()

编译器错误消息: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="">[email protected]</a></li> 
      } 
     } 
    </ul> 
</form> 

回答

7

类型转换item.Key

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

非常感谢你的回复 – Sara

4

@ViewBag.filesFolders

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

扩展方法不能动态分派。

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

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

其他的解决办法是投你item.Keystring型,所以它会看起来像:

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

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

+0

谢谢你的回复... – Sara

+0

@SaranSassy,不客气。如果某些答案有帮助,则可以将其标记为已接受:) – whoah

相关问题