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?
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 the
Views` 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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With