[英]Redirecting user to external site
我想通過一個簡單的定位標記將用戶重定向到ASP.NET MVC應用程序外部的外部站點。 棘手的部分是,用戶可以自己輸入鏈接。
<a href="@model.Url">up up and away!</a>
如果用戶在字段(錯誤用戶)中輸入: www.google.com
,則他將被重定向到http://www.example.com/page/www.google.com
。 這完全可以理解,他應該在鏈接前使用http://
。
如果我像這樣對鏈接前面的http://
進行硬編碼,它會按預期工作: <a href="http://@model.Url">up up and away!</a>
但是,如果用戶要輸入http://www.google.com
(好用戶),瀏覽器將重定向到http://http//www.google.com
,該地址無處可去。
因此,現在的問題是:是否有幫助程序或方法或某些東西可以路由到外部站點,無論鏈接是否包含http://
? 像@Url.ExternalLink(model.Url)
這樣的東西會很棒。 我可以自己寫這個,但不需要重新發明輪子,對嗎? 因此,如果車輪存在,請提供車輪! 提前致謝!
檢查了一堆鏈接,但它們不滿足我對可變用戶輸入的需求(永遠不要信任用戶!): 如何在MVC Razor中正確編碼到外部URL的 鏈接,從OnActionExecuting重定向到外部URL? , 為什么Response.Redirect不重定向外部URL? , url.Action在ASP.NET MVC頁面上的新窗口中打開鏈接 ,...
您的用例非常具體,MVC框架對此沒有任何擴展方法。 您需要自己開發它。 您有以下選擇:
UrlHelper
類創建擴展方法(如您所述)- @Url.ExternalLink(model.Url)
HtmlHelper
創建擴展方法- @Html.ExternalLinkFor(model => model.Url)
<a href="@model.Url">up up and away!</a>
仍然有效。 您可以使用以下方法輕松擴展UrlHelper :
public static string ExternalLink(this UrlHelper helper, string uri)
{
if (uri.StartsWith("http://")) return uri;
return string.Format("http://{0}", uri);
}
例子
@Url.ExternalLink("http://google.com")
@Url.ExternalLink("google.com")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.