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

时间:2016-04-06 16:00:44

标签: c# asp.net-mvc asp.net-mvc-4 caching cache-manifest

这是我的代码:

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

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

该网站位于MVC中,但我们确实有几个ASPX页面,因为我们需要使用一些旧版控件。所以在我的清单文件中,我试图使用Url.Content()创建ASPX页面的相对路径,这似乎有效,直到我需要添加一些参数和"&"被编码。没有"&"它似乎工作(除了它加载/缓存错误的东西)。

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

即使它是MVC4,我也不能只是从"〜"开始。因为它没有像在图像或锚中那样被解析。

2 个答案:

答案 0 :(得分:2)

只需将查询字符串附加到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())

答案 1 :(得分:1)

起初我以为是编码值的Url.Content,但它实际上就是Razor引擎。 Html.Raw纠正了它,虽然我之后必须添加一个空行,因为换行也丢失了。

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

Paul Abbott的回答引导我得出这个结论,所以都要感谢他。