【问题标题】:C# ASP.NET MVC @Url.Action does not exist in the current contextC# ASP.NET MVC @Url.Action 在当前上下文中不存在
【发布时间】:2016-03-05 18:03:55
【问题描述】:

我知道 Visual Studio 中可能有一些特殊之处,它突出显示 @URL 在当前上下文中不存在,但它仍然有效。但是我认为我遇到的问题是不同的。

我现在正在编写一个应用程序,我已经在自己的区域内完成了许多管理屏幕。到目前为止,主要区域只有一个ViewStart 指向一个_Layout,它检测您是否已登录或未显示登录页面(有效),如果您未登录,则显示一系列超链接您进入管理页面 - 一切正常。

_Layout 中,@Url 突出显示为在当前上下文中不存在 - 但工作正常。

现在我已经开始编写主要区域,所以添加了一个Index.cshtml,它有一个@model,突出显示为在当前上下文中不存在,但我能够毫无问题地访问其中的数据。

问题是我在页面中添加的任何锚点并使用 @Url.Action 设置 URL 都不起作用,他们都说在当前上下文中不存在,当您查看页面的源时,href= 是缺少网址。

如果我手动编码 href= 它确实会出现在源代码中并且确实有效。

更新:

所以进一步评论下面的 2,我现在有......

<div class="btn-toolbar">
    <a href="@Url.Action("new")" class="btn btn-primary btn-sm">
        <i class="glyphicon glyphicon-plus"></i>
        Create Company
    </a>
</div>

@Html.ActionLink("Create Company","New","Summary")

在我的chtml 页面和...

<a href="@Url.Action("index", "Users", new {area = "Admin"})">User Admin</a>
<a href="@Url.Action("index", "Companies", new {area = "Admin"})">Customer Admin</a>

在我的 _Layout 中呈现 cshtml,但生成的 html 是...

<a href="/admin/Users">User Admin</a>
<a href="/admin/Companies">Customer Admin</a>
<a href="/logout">Logout</a>

<h2>
    Overview Screen
</h2>

<br/>

<div class="btn-toolbar">
    <a class="btn btn-primary btn-sm">
        <i class="glyphicon glyphicon-plus"></i>
        Create Company
    </a>
</div>

<a href="">Create</a>

如您所见,锚点和@Url.Action 在_Layout 中工作正常,但@Url.Action@Html.ActionLink 都不会生成URL。

【问题讨论】:

  • 我已经解决了所有“在当前上下文中不存在”的问题,web.config 文件 1 中的版本号不正确。只需要弄清楚为什么我的@Url.Actions 不呈现到此页面上的 href=。
  • 尝试更改锚点和 Url.Action Html.ActionLink,结果非常相似,唯一的区别是锚点和 Url.Action 导致锚点完全没有 href,Html.ActionLink 给出了一个带有空 href 的锚点。

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


【解决方案1】:

在@Url.Action 代码周围使用单引号。

<a href='@Url.Action("new")' class="btn btn-primary btn-sm">


<a href='@Url.Action("index", "Users", new {area = "Admin"})'>User Admin</a>
<a href='@Url.Action("index", "Companies", new {area = "Admin"})'>Customer Admin</a>

【讨论】:

    【解决方案2】:

    您应该检查路由。如果没问题,请检查 plesk 版本,因为如果它是旧版本或未更新,那么您的页面将无法正常工作,并且将始终出现此错误。

    【讨论】:

      【解决方案3】:

      我也有这个问题。

      我认为这与属性路由和路由优先级有关。如果您在 RouteConfig.cs 文件中的默认 routes.MapRoute 定义之后有 routes.MapMvcAttributeRoutes();,则可能会发生这种情况。

      您可能希望将 routes.MapMvvAttributeRoutes() 移到其他 routes.MapRoute 定义之前。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-21
        相关资源
        最近更新 更多