无法解码由MVC编码的URL字符串

时间:2014-10-06 07:17:59

标签: asp.net-mvc string url view decoding

我正在将一个带有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.HtmlDecodeHttpUtility.UrlDecodeHtml.Raw - 没有任何效果。

有什么想法吗?

修改

感谢Daniel的评论,我意识到只有当URL在meta属性中时才会发生编码。当它是一个“可显示的”HTML时,没有编码。

无论如何,仍在寻找解决方案。

1 个答案:

答案 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" />

现在效果很好。