错误:在ASP.NET MVC3中当前上下文中不存在名称为'Url'的内容

14

我在现有的ASP.NET MVC 3项目根目录下添加了一个Razor类型的MVC 3视图页面。 视图名称:TestView.cshtml 我打开了上述文件,并尝试在视图中添加以下行代码:

<head>
<link href="@Url.Content("~/Content/Styles/Themes/base/jquery.ui.all.css")" rel="Stylesheet" type="text/css" />
    <title></title>
</head>

对于上面的那一行,我得到了一个错误:当前上下文中不存在“Url”这个名称。 但是,当我在“Home”或“Account”文件夹内的一个视图中尝试相同的操作时,它对我来说运行良好。 有人可以帮我知道我到底错过了什么吗?

2个回答

32

这是因为您将视图页面创建在MVC项目的根目录而不是Views文件夹中。

在Views文件夹中有一个web.config文件,其中包含以下部分:

<system.web.webPages.razor>
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
        <namespaces>
            <add namespace="System.Web.Mvc" />
            ...

这里指定的命名空间用于编译视图,所以您会收到“Url不存在”的错误消息。

您可以尝试将web.config的内容复制到“web.config”根目录,但我不确定这是否是一个好主意。这样做后,你可能会收到没有注册构建提供程序的警告,但根据该链接,这将完美地工作。

我认为您可能需要注册新的自定义RazorViewEngine来指定搜索视图的新路径,因为默认视图引擎在Views文件夹中搜索视图。

除非您需要在根文件夹中拥有视图,否则我建议您将视图移动到Views文件夹中,希望这能让您使其正常工作。


当我升级到下一个版本时,我需要手动编辑并更改 \Views\Web.config 中的 System.Web.Mvc, Version=5.2.7.0System.Web.WebPages.Razor, Version=3.0.0.0更新版本,以便在 razor .cshtml 文件中不会显示错误的 IntelliSense。 - stomy
@危险 如果可以的话,我会给你一个巨大的耳光! kkkkk 谢谢!!! - Marco Alves
@Marco Alves - 我不知道该说什么!我感到受宠若惊!谢谢! :-) - Dangerous

0

请尝试检查您的packages.config文件,确保其与webconfig中的包版本相同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接