【问题标题】:@Url.RouteUrl does not exist in the current context in asp.net mvc4@Url.RouteUrl 在 asp.net mvc4 的当前上下文中不存在
【发布时间】:2017-01-15 22:43:47
【问题描述】:

我在 url (<a href="@Url.RouteUrl....) 上收到错误。 错误出现在 URL 字上。 错误是 url 在当前上下文中不存在 它可以在另一个视图页面中使用

@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>
     }
 }

怎么解决??

【问题讨论】:

  • Url.RouteUrl returns null的可能重复
  • 我该怎么办??如何解决??先生,错误是在 Url word..它显示不存在

标签: c# asp.net-mvc-4


【解决方案1】:

静态 UrlHelper-Instance "Url" 未在 MVC 帮助器的上下文中定义。但是您可以通过Html.ViewContext.Controller 或通过在 Html.ViewContext 的帮助下创建一个实例来获取自己的实例(在链接的 SO 帖子中进行了描述)。

你可以这样做

@helper MyHelper()
{
    UrlHelper url= ((Controller) Html.ViewContext.Controller).Url;

    <span>@url.RouteUrl(new {Controller = "Home", Action = "Action"})</span>
}

这里给出了一些不错的辅助方法:Generate URL in HTML helper

应用于您的代码:

@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>
     }
 }

【讨论】:

  • @ManojMaharana - 我已经编辑了帖子 - 希望对您有所帮助。
  • 先生,错误出现在 UrlHelper、Controller、Controller 附近。找不到命名空间的类型...先生,我该怎么办??
猜你喜欢
  • 2013-10-09
  • 2011-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多