我在umbraco cms中有一个asp.net网站,在那里我可以使用razor模板创建一些宏。我想在页面中集成一个facebook的like按钮,只有当我将整个iframe粘贴到razor宏中并将宏合并到我的主页上时,这才有效。
但是,如果我想包含一些参数,我将iframe URL从代码片段中取出,并在该URL中粘贴另一个参数它停止工作。
然而,渲染后的iframe url是100%相同的。
任何人都有一个想法,我如何才能确保正确的网站网址是在Facebook的iframe参数可以改变?(取决于我在umbraco cms中绑定的主机名)
这是我的剃刀代码不工作:
@{
var currentLangPath = "www.newurl.com";
var iframeSource = "http://www.facebook.com/plugins/like.php?app_id=207125959336150&href=" + currentLangPath + "&send=false&layout=button_count&width=110&show_faces=false&action=like&colorscheme=dark&font=arial&height=21";
}
<a href="#visitFanpage"><img src="/images/facebook_logo.jpg" alt="Solex Facebook" /></a>
<p>Become part of the community, and feel free to share your experience.</p>
<div class="social">
<iframe src="@iframeSource" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:110px; height:25px;" allowTransparency="true"></iframe>
</div>
下面是一个Razor文件的内容:
<a href="#visitFanpage"><img src="/images/facebook_logo.jpg" alt="Solex Facebook" /></a>
<p>Become part of the community, and feel free to share your experience.</p>
<div class="social">
<iframe src="http://www.facebook.com/plugins/like.php?app_id=207125959336150&href=www.newurl.com&send=false&layout=button_count&width=110&show_faces=false&action=like&colorscheme=dark&font=arial&height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:110px; height:25px;" allowTransparency="true"></iframe>
</div>
注意,这两个Razor文件有完全相同的输出,所以我发现动态URL不工作是非常奇怪的。
输出实际上是不一样的,iframeSource变量得到HTML编码,因此"&"变成:
&amp;
你可以做两件事:
- 删除iframeSource中每个&后面的amp; 用@Html.Raw(iframeSource)代替@iframeSource