2016-09-08 23 views
0

URL(<a href="@Url.RouteUrl....)にエラーが発生します。 エラーがURL語に..です エラーは、URLは、それが解決する方法を別のビューページに@ Url.RouteUrlはasp.net mvc4の現在のコンテキストに存在しません

@helper GetTreeView(Abacus_CMS.Models.AbacusModel siteMenu, int parentID) 
{ 
    foreach (var i in siteMenu.AbacusMenuList.Where(a => a.ParentCatagoryId.Equals(parentID))) 
    { 
    <li> 
     @{ var submenu = siteMenu.AbacusMenuList.Where(a => a.ParentCatagoryId.Equals(i.Id)).Count();} 
     @if (submenu > 0) 
     { 
      <li style="margin-left: -6px;"> 
       <a href="@Url.RouteUrl("AbacusPage", new { catname = HttpUtility.UrlEncode(i.Name.Replace(' ', '-'))})" id="@i.Name.Replace(' ', '-').ToLower()">@i.Name 
        <i class="icon-user"></i><span class="title" style="margin-left: -24px;">@i.Name</span> 
        <span class="arrow " style="height: 4px;"></span> 
       </a> 
       <ul class="sub-menu"> 
        @treeview.GetTreeView(siteMenu, i.Id) 
        @* Recursive Call for Populate Sub items here*@ 
       </ul> 
      </li> 
     @*<span class="collapse collapsible">&nbsp;</span>*@ 
     } 
     else 
     { 
      <a href="@Url.RouteUrl("AbacusPage", new { catname = HttpUtility.UrlEncode(i.Name.Replace(' ', '-')), style="margin-left: 30px;"})" id="@i.Name.Replace(' ', '-').ToLower()">@i.Name 
      </a> 
     } 
     </li> 
    } 
} 

を働く現在のコンテキスト に存在していないです?

+0

可能な重複はnullを返します

あなたはいくつかの素敵なヘルパーメソッドがここに与えられていること

@helper MyHelper() { UrlHelper url= ((Controller) Html.ViewContext.Controller).Url; <span>@url.RouteUrl(new {Controller = "Home", Action = "Action"})</span> } 

ような何かを行うことができます](http://stackoverflow.com/questions/1278969/url-routeurl-returns-null) –

+0

私は何をすべきですか?どのように解決するのですか?エラーはURLの上にあります。 t存在する –

答えて

0

スタティックUrlHelper - インスタンス "Url"は、MVCヘルパーのコンテキスト内では定義されていません。しかし、Html.ViewContext.Controllerを使って独自のインスタンスを取得することも、Html.ViewContext(リンクされたSO投稿に記述されている)の助けを借りてインスタンスを作成することもできます。 Generate URL in HTML helper

はあなたのコードに適用される:[Url.RouteUrlの

@helper GetTreeView(Abacus_CMS.Models.AbacusModel siteMenu, int parentID) 
{ 
    UrlHelper url= ((Controller) Html.ViewContext.Controller).Url; 
    foreach (var i in siteMenu.AbacusMenuList.Where(a => a.ParentCatagoryId.Equals(parentID))) 
    { 
    <li> 
     @{ var submenu = siteMenu.AbacusMenuList.Where(a => a.ParentCatagoryId.Equals(i.Id)).Count();} 
     @if (submenu > 0) 
     { 
      <li style="margin-left: -6px;"> 
       <a href="@url.RouteUrl("AbacusPage", new { catname = HttpUtility.UrlEncode(i.Name.Replace(' ', '-'))})" id="@i.Name.Replace(' ', '-').ToLower()">@i.Name 
        <i class="icon-user"></i><span class="title" style="margin-left: -24px;">@i.Name</span> 
        <span class="arrow " style="height: 4px;"></span> 
       </a> 
       <ul class="sub-menu"> 
        @treeview.GetTreeView(siteMenu, i.Id) 
        @* Recursive Call for Populate Sub items here*@ 
       </ul> 
      </li> 
     @*<span class="collapse collapsible">&nbsp;</span>*@ 
     } 
     else 
     { 
      <a href="@url.RouteUrl("AbacusPage", new { catname = HttpUtility.UrlEncode(i.Name.Replace(' ', '-')), style="margin-left: 30px;"})" id="@i.Name.Replace(' ', '-').ToLower()">@i.Name 
      </a> 
     } 
     </li> 
    } 
} 
+0

私はどこに変更するには私のコードで私を見せてください –

+0

@ManojMaharana - 私はポストを編集しました - それが役立つことを願っています。 –

+0

エラーはUrlHelper、Controller、Controllerの近くにあります。名前空間のタイプが見つかりませんでした...私は何をすべきですか? –

関連する問題