我有一些模型,我想像这样在 RazorView 中呈现 html 标记:
<a href="@Model.Website">@Model.Title</a>
用户可以在
Website
属性( google.com
、 www.google.com
、 http://www.google.com
等)中写入任何 url。问题是如果用户不写协议(protocol)前缀,比如
http
,那么结果 HTML 会被浏览器视为站点相对 URL:<a href="http://localhost:xxxx/google.com">Google</a>
是否有任何简单的解决方案,或者我是否必须在呈现 html 之前准备网站字符串(添加“http”前缀)?
最佳答案
这不是真正的 MVC 特定,但您可以使用 UriBuilder
类:
string uri = "http://msdn.microsoft.com/en-us/library/system.uribuilder.aspx";
var uriBuilder = new UriBuilder(uri);
uriBuilder.Scheme = "http";
Console.WriteLine(uriBuilder.Uri);
打印
http://msdn.microsoft.com/en-us/library/system.uribuilder.aspx
。string uri = "google.com";
var uriBuilder = new UriBuilder(uri);
uriBuilder.Scheme = "http";
Console.WriteLine(uriBuilder.Uri);
打印
http://google.com/
。