如何在非MVC Razor网页中使用@ Url.Content()?

时间:2014-06-13 14:21:40

标签: asp.net razor razor-2

由于我使用的是安装了NuGet Package的Microsoft.AspNet.Razor的Web应用程序。

在WebForm页面( .aspx)中,我可以使用ResolveUrl()但是在Razor页面( .cshtml)中,我收到此错误 - >

"x:\Source\Foo.Dealer\Foo.Dealer.WebApp.Mobile\Member\DmsDashboard.cshtml(103): error CS0103: The name 'Url' does not exist in the current context"

源代码在这里..

@section HeadJavascriptLibraryFile
{
    <script type="text/javascript" src="@Url.Content("~/scripts/webpages/setting-dmsdashboard.js")"></script>
}

<img src="@(Url.Content("~/images/miscellaneous/reportandpiechart2.png"))" alt="" />

源代码按要求...

//LayoutMembmerGeneral.cshtml
@using Foo.Dealer.WebApp.Mobile.Infrastructure;
@{
    if (LoginManagementTools.DealerUserLoginValidation_BrowsingPage(HttpContext.Current.Request, HttpContext.Current.Response, HttpContext.Current.Session) == false) { }
}<!DOCTYPE html>
<html>
<head>
  <title>@Page.Title</title>
  @RenderSection("HeadJavascriptLibraryFile", false)
</head>
<body>
@RenderBody()
</body>
</html>

//DmsDashboard.cshtml...
@using Foo.Dealer.WebApp.Mobile.Infrastructure
@using System.Web.Mvc;

@{
    Page.Title = "A New Dawn In Auto Pricing";
    Layout = "LayoutMemberGeneral.cshtml";
}
@section HeadJavascriptLibraryFile
{
}

<div id="WebLayout1">
    <img src="@Url.Content("images/miscellaneous/reportandpiechart2.png")" alt="" />
</div>

2 个答案:

答案 0 :(得分:2)

网址助手似乎并不存在于ASP.Net网页中(这实际上就是您尝试做的事情),但您只需使用以下代码即可达到同样的效果:

<img src="~/images/miscellaneous/reportandpiechart2.png" alt="" />

代字号(〜)引用应用程序根目录,并在编译页面并将其发送到客户端时进行转换。

答案 1 :(得分:1)

波浪号(〜)不会被转换为任何data-属性的一部分,并且可能,其他地方也是如此,尽管我还没有进行过广泛的研究。

如果您在自动转换不起作用的地方碰巧需要此信息,则可以使用代字号等效HttpContext.Current.Request.ApplicationPath

在大多数Razor视图中,您应该能够将其缩短为以下内容:

@Request.ApplicationPath

参考:http://msdn.microsoft.com/en-us/library/system.web.httprequest.applicationpath.aspx

在某些情况下,另一种选择是使用VirtualPathUtility,例如:

@VirtualPathUtility.ToAbsolute("~/")