Paypal按钮管理器不接受小数金额

时间:2015-05-16 16:42:20

标签: c# asp.net-mvc razor paypal paypal-sandbox

我在这个视图中有这个部分,它就像一个目录,显示用户可以购买的项目:

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.genero.Nome)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Nome)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.NomeArtista)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Preco)
        </td>
        <td>
            @Html.ActionLink("Play", "", new { path = item.path }) |
            @if (item.Preco > 0)
            {
                string price = item.Preco.ToString("0.00");
                var payPalBtn = PayPal.ButtonManager.AddToCartButton.Create(
                       business: "pedrro2-facilitator@hotmail.com",
                       itemName: item.Nome,
                       amount: price
                       );


              HtmlString payPalBtnHtml = new HtmlString(payPalBtn.WebSiteCode);

             @Html.ActionLink("| Adicionar ao carrinho", "AddToCart", "ShoppingCart", new { id = item.MusicaId },"")
            }else{
            <button type="button" class="addmusic" data-id="@item.MusicaId">Add</button>
            }

        </td>
    </tr>
}

在我的模型中,变量Preco十进制,但amount方法的PayPal.ButtonManager.AddToCartButton.Create参数必须为字符串 ,将此变量Preco转换为字符串的最佳方法是什么?

我尝试使用以下代码进行转换:

string price = item.Preco.ToString("0.00");

但它不起作用,显示此异常:

  

PayPal.ButtonManager.ButtonManagerException:无效参数 - 金额无效

2 个答案:

答案 0 :(得分:2)

我认为您获得了值2,00,因为运行代码的计算机使用的是葡萄牙文化或使用,作为小数分隔符的任何文化。在将十进制值转换为字符串

时,可以使用. culture来获取en-US作为小数点分隔符的字符串值
string price = item.Preco.ToString("0.00", new System.Globalization.CultureInfo("en-US"));

答案 1 :(得分:1)

通过添加以下内容解决了问题:

string price = item.Preco.ToString().Replace(",", ".");