我正在使用MVC3並試圖從https服務內容,問題是當我調用Url.Content時,文件仍然使用相對url從http服務。我認爲這個問題已在MVC3中解決,但我似乎無法找到任何解決方案。有人知道這個問題是否在MVC3中內在地解決,如何完成它,或者我需要創建自己的幫助器方法來生成基於協議的絕對Url?如何使用https在MVC3中生成絕對URL?
回答
您可以使用VirtualPathUtility.ToAbsolute來實現您自己的解決方案。大概是這樣的:
public static class UrlHelperExtension {
public static string Absolute(this UrlHelper url, string relativeOrAbsolute) {
var uri = new Uri(relativeOrAbsolute, UriKind.RelativeOrAbsolute);
if (uri.IsAbsoluteUri) {
return relativeOrAbsolute;
}
// At this point, we know the url is relative.
return VirtualPathUtility.ToAbsolute(relativeOrAbsolute);
}
}
,你會使用像:
@Url.Absolute(Url.Content("~/Content/Image.png"))
(沒有測試此我自己,隨意玩耍,使其工作的權利。)
這有助於您爲內容文件生成絕對網址。爲了更改生成的URL的方案,您可以創建一個額外的擴展方法來操縱給定URL的方案,以便它們是HTTPS或其他內容。
正如Khalid在評論中指出的那樣,類似的擴展方法已經可以在各種可以使用的開源項目中使用(假設許可證允許)。一個例子可以發現here。
你的建議與Mike Hadlow非常相似。 http://www.google.com/codesearch/p?hl=en#MEucUyOL2vo/trunk/Suteki.Shop/Suteki.Common/Extensions/UrlExtensionsHelper.cs&q=SSL%20package:http://sutekishop%5C.googlecode% 5C.com&d = 4 – 2011-04-04 17:38:47
我以前沒有見過,會更新答案,添加一個鏈接。謝謝。 – paracycle 2011-04-05 07:52:28
看起來像這也值得創建一個Url.ContentAbsolute或類似的方法,而不是每次都需要包裝它們 – 2011-04-05 12:29:37
您可以使用Url.RouteUrl,一些重載採取協議參數,看起來是這樣的:
Url.RouteUrl("Product", new { itemId = "123456" }, "https");
看看一個重載,看看你可以使用一個
如果你不想以「建」的網址,只希望當前頁面的完整路徑,這將這樣的伎倆
Context.Server.UrlEncode(Context.Request.Url.AbsoluteUri)
我知道它不是一個擴展方法一樣優雅,但想到共享它用於教育目的
不使用擴展方法或硬編碼協議,由@BlackTigerX因爲提出了一個解決方案:
Url.RouteUrl("Default", new { Action = "About" }, Request.Url.Scheme)
在建議下面的文章:http://captaincodeman.com/2010/02/03/absolute-urls-using-mvc-without-extension-methods/
- 1. 在symfony任務中生成絕對URL
- 2. Symfony的使用錯誤域,以生成絕對URL
- 3. ASP.NET MVC3 Html.Raw更改絕對URL?
- 4. 如何在SoapUI中使用HTTPS URL
- 5. 如何爲Pylons控制器生成絕對URL?
- 6. 在絕對和相對URL上下文中使所有URL絕對絕對
- 7. 帶有https URL的絕對圖像在itextsharp.xmlworker中不起作用
- 8. 如何使用絕對URL設置UIImage?
- 9. 如何使用automapper解析絕對url
- 10. 在Pelican靜態網站生成器中使用絕對URL ATOM feeds
- 11. 如何在Zend Framework(1.11)控制器操作中生成絕對url?
- 12. 在JQM中使用絕對URL
- 13. 如何在JSF中獲得絕對url?
- 14. 如何在python中獲取絕對url
- 15. Symfony2/Twig:生成備用絕對URL路徑以用於CDN?
- 16. 如何在角度中使用絕對URL獲取$ state
- 17. 如何在Perl中使用兩個組件創建絕對URL?
- 18. 如何在wget中將相對URL更改爲絕對URL
- 19. 生成對象的絕對URL沒有HTML標記
- 20. Rails URL生成器開關http/https
- 21. 爲表單生成https操作url
- 22. MVC3生成包含端口號的URL,如何阻止它
- 23. 在java中的絕對URL
- 24. 如何在Mozart中使用絕對值?
- 25. 在UI中使用Telerik在MVC3中生成PDF文件
- 26. 如何在Perl中生成URL slugs?
- 27. 如何在codeignitor中生成動態URL?
- 28. 如何在JSP中動態生成URL?
- 29. 如何使用Selenium在scrapy中生成片段URL?
- 30. 如何在軌使用AJAX jQuery中生成動態的URL
下面的解決方案都很好,但我想指出,如果你在負載平衡的環境,那麼所有的賭注都將關閉,以生成什麼網址。 – 2012-04-05 12:17:18