剃刀:创造pinterest字符串

时间:2012-06-27 15:53:40

标签: asp.net-mvc-3 razor

我正在尝试创建一个pinterest pin it按钮。 以下是代码:

<a href="http://pinterest.com/pin/create/button/?url=http%3A%2F%2Fwww.domain.name%2Fproduct%2F@Model.ProductDetails.URLName&media=http%3A%2F%2Fwww.domain.name%2Fproduct%2F@Model.ProductDetails.Image&description=@Model.ProductDetails.ProductDescription" class="pin-it-button" count-layout="horizontal"><img border="0" src="//assets.pinterest.com/images/PinExt.png" title="Pin It" /></a>
       <script type="text/javascript" src="//assets.pinterest.com/js/pinit.js"></script>

如您所见,有三个变量:

url : http%3A%2F%2Fwww.domain.name%2Fproduct%2F@Model.ProductDetails.URLName

media: http%3A%2F%2Fwww.domain.name%2Fproduct%2F@Model.ProductDetails.Image

description: @Model.ProductDetails.ProductDescription

在所有三个变量中,一些数据来自ViewModel,使用@Model

但只有@Model.ProductDetails.ProductDescription正在运作 而另外两个不起作用可能是因为它们是更大字符串的一部分。

1 个答案:

答案 0 :(得分:2)

剃刀解析器认为前两个值是电子邮件地址或类似的,因此将它们保留为纯文本。为了通知解析器它们应该被评估,你需要使用显式表达式,例如@(Model.Property),所以你的变量将是:

url : http%3A%2F%2Fwww.domain.name%2Fproduct%2F@(Model.ProductDetails.URLName)
media: http%3A%2F%2Fwww.domain.name%2Fproduct%2F@(Model.ProductDetails.Image)
description: @(Model.ProductDetails.ProductDescription)

你的片段就是:

<a href="http://pinterest.com/pin/create/button/?url=http%3A%2F%2Fwww.domain.name%2Fproduct%2F@(Model.ProductDetails.URLName)&media=http%3A%2F%2Fwww.domain.name%2Fproduct%2F@(Model.ProductDetails.Image)&description=@(Model.ProductDetails.ProductDescription)" class="pin-it-button" count-layout="horizontal"><img border="0" src="//assets.pinterest.com/images/PinExt.png" title="Pin It" /></a>
<script type="text/javascript" src="//assets.pinterest.com/js/pinit.js"></script>

我通常会将Phil Haack's Razor Quick Reference指南加入书签!