Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error: The name 'Url' does not exist in the current context in asp.net mvc3

I added a MVC 3 View Page of type Razor to the root of the existing ASP.NET MVC 3 project. ViewName: TestView.cshtml I opened the above file and tried to add the following line of code in the view:

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

For the line above I am getting an error: The name 'Url' does not exist in the current context. But when I am trying the same in a view within the Home or Account folder it is working fine for me. Can any one help me to know what exactly I am missing?

like image 768
santosh kumar patro Avatar asked Dec 01 '14 13:12

santosh kumar patro


1 Answers

This is because you have created the view page in the root of the MVC project rather than in the Views folder.

In the Views folder there is a web.config file which has the following section:

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

The namespaces specified here are used to compile the views which is why you get the 'Url does not exist' error message.

You could try to copy the contents of the web.config to the 'web.config' root but I'm not sure this is a good idea. And after doing so you may get a warning that there is no build provider registered but according to this link this will work perfectly fine.

I believe you may then have to register a new custom RazorViewEngine to specify the new paths to search for viewas the default view engine searches for views in theViews` folder.

I'm not sure if you may need to make any other changes but unless you need to have Views in the root folder, I would recommend you move your view to the Views folder to hopefully allow you to get it working.

like image 58
Dangerous Avatar answered Oct 16 '22 08:10

Dangerous