2013-10-06 4 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

유형 문자열

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

답장을 보내 주셔서 감사합니다. – Sara

4

@ViewBag.filesFolders

item.Key 캐스팅 ... 다음과 같습니다. HtmlHelper에서 오류 설명을 반환합니다.

확장 메서드를 동적으로 디스패치 할 수 없습니다.

ViewBag.filesFolders은 동적으로 형식화 된 뷰 백이므로 문제가됩니다.

filesFolders을 표시하려면 강력한 형식의 ViewModel (이상 - IEnumerable<T>)을 사용해야합니다.

다른 솔루션은 item.Key-string 유형을 캐스팅하는 것입니다, 그래서 것 같습니다

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

하지만 내가 전에 말했듯이, 나는 미래에 강력한 형식의 뷰 모델을 사용하는 것이 좋습니다.

+0

답장을 보내 주셔서 감사합니다 ... – Sara

+0

@SaranSassy, ​​여러분 환영합니다. 어떤 대답이 도움이 되었다면, 그것을 인정 된 것으로 표시 할 수 있습니다 :) – whoah