如何在带参数的 MVC4 中使用 Url.Content()?

How can I use Url.Content() in MVC4 with parameters?

这是我的代码:

@Url.Content("~/AspNetWebForms/ViewPDF.aspx?id=" + docID.ToString() + "&small=True")

我正在为 MVC4 中的应用程序缓存动态构建清单文件。我知道它即将淘汰(或似乎是),但我仍然需要支持旧版浏览器。

该网站采用 MVC 格式,但我们确实有几个 ASPX 页面,因为我们需要使用一些遗留控件。因此,在我的清单文件中,我尝试使用 Url.Content() 创建到 ASPX 页面的相对路径,这似乎有效,直到我需要添加几个参数并且“&”被编码。没有“&”它似乎工作(除了它 loads/caches 错误的东西)。

因为它是一个清单文件,我无法进行重定向,因为任何重定向都会导致应用程序缓存失败。

即使它是 MVC4,我也不能只从“~”开始,因为它不会像在图像或锚点中那样被解析。

只需将查询字符串附加到 Url.Content 的输出即可。

@(Url.Content("~/AspNetWebForms/ViewPDF.aspx) + "?id=" + docID.ToString() + "&small=True")

@string.Format("{0}?id={1}&small=true", 
    Url.Content("~/AspNetWebForms/ViewPDF.aspx"), docID.ToString())

起初我以为是 Url.Content 对值进行编码,但实际上是 Razor 引擎在做。 Html.Raw 更正了它,但我确实不得不在之后添加一个空行,因为换行符也丢失了。

@Html.Raw(Url.Content("~/AspNetWebForms/ViewPDF.aspx?id=" + docID.ToString() + "&small=True"))

Paul Abbott 的回答让我得出了这个结论,非常感谢他。