C#ASP.NET MVC @ Url.Action在当前上下文中不存在

时间:2016-03-05 18:03:56

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

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

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

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

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

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

如果我手动编码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。

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

我也有这个问题。

我认为这与属性路由和路由优先级有关。如果你有routes.MapMvcAttributeRoutes();在RouteConfig.cs文件中的缺省routes.MapRoute定义之后。

您可能希望在其他路由之前移动routes.MapMvvAttributeRoutes()。MapRoute definition ...

希望这会有所帮助,欢迎任何更深层次的想法

答案 2 :(得分:0)

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