我正在尝试使用Razor构建Href 该字符串最终将如下所示:
在我的模型中,我有订单ID和哈希字符串 由于路线不是我网站的一部分,我不相信我可以使用@ Url.Action等默认方法 因此无法使用协议:Request.Url.Scheme 就像我在别处使用过一样。
所以目前我正在试图弄清楚如何使用字符串函数创建它 我试过了 Url.Encode Url.EscapeDataString 了Html.Encode 但我没有快速到达:
<a href="@Uri.EscapeDataString("https://www.notmysite.co.uk/controller/action?order_ID=" + Model.bookingNumber + "&hashComparator=" + Model.hashCode)">Click Here to be transferred</a>
输出文本在其中始终具有加号和等号,并且不起作用。 我需要哪种组合?!
答案 0 :(得分:40)
我找到了一种方法:
@{
var url = string.Format(
"https://www.notmysite.co.uk/controller/action?order_ID={0}&hashComparator={1}",
@Uri.EscapeDataString(Model.bookingNumber.ToString()),
@Uri.EscapeDataString(Model.hashCode));
}
<p><a href="@url">Click Here to be transferred</a></p>
编辑2015 - 如Jerads所述 - 解决方案是仅对查询字符串元素进行编码,而不是对整个URL进行编码 - 这就是上面所做的。
答案 1 :(得分:2)
问题在于您正在尝试对整个网址进行编码。您要编码的唯一部分是查询字符串值,您可以使用x
进行编码。
您不希望对地址,查询字符串参数或Url.Encode()
和?
分隔符进行编码,否则您最终会得到浏览器无法解析的地址。
最终,它看起来像这样:
&
答案 2 :(得分:-1)
这是我为此问题提出的第一个链接。答案对我来说不起作用,因为我认为我正在使用核心。所以想把它添加进来。
System.Net.WebUtility.UrlEncode(MyVariableName)
如果Url.Encode不起作用,请尝试以上操作。同样如前所述,不要在整个URL字符串上使用它,只需将它用于各个查询字符串变量即可。否则,您的网址很可能无法正常工作。
答案 3 :(得分:-3)
更简单的方法是使用@ Html.Raw(Model.SomethingUrl)