我正在将一个带有URL的字符串从控制器传递给视图(使用模型)。 虽然字符串在控制器中,但它没有被编码,但在视图中URL被编码。
编码前的网址:
http://app.xpinator.com/FacebookPayments/FacebookDesktopAdData?paymentCode=s5usd920k&userLocale=en-us&ver=v3.0.1
编码后的网址:
http://localhost/FacebookPayments/FacebookPaymentItemData?paymentcode=v250usd45000k&userlocale=en-us&ver=v3.0.1
视图中的相关行:
<meta property="og:url" content="@Model.URL" />
我想在视图中显示已解码的URL。我尝试使用HttpUtility.HtmlDecode
,HttpUtility.UrlDecode
和Html.Raw
- 没有任何效果。
有什么想法吗?
修改
感谢Daniel的评论,我意识到只有当URL在meta属性中时才会发生编码。当它是一个“可显示的”HTML时,没有编码。
无论如何,仍在寻找解决方案。
答案 0 :(得分:0)
在意识到只有meta标签出现问题后,我才发现这个帖子: Why is Html.Raw escaping ampersand in anchor tag in ASP.NET MVC 4?
我通过建议的解决方法解决了问题,使整个元标记成为原始值的一部分。
像这样:控制器:
model.URL = string.Format("{0}{1}{2}", "<meta property=\"og:url\" content=\"", paymentItemOG.URL, "\" />");
查看:
<meta property="og:image" content="@Model.Image" />
@Html.Raw(Model.URL)
<meta property="og:description" content="@Model.Description" />
网页浏览源:
<meta property="og:image" content="http://localhost/content/images/75x75_fullLogo.png" />
<meta property="og:url" content="http://localhost/FacebookPayments/FacebookPaymentItemData?paymentcode=v250usd45000k&userlocale=en-us&ver=v3.0.1" />
<meta property="og:description" content="texttexttext" />
现在效果很好。