1

.NET MVC プロジェクトで Braintree.js を使用して、クレジット カードの詳細を暗号化しています。肯定的なケースはかなりうまく機能し、トランザクションは成功しています。

問題は、コントローラーでいくつかの検証があり、エラーが発生した場合にビューを再度表示すると、クレジット カード フィールドに暗号化された値が含まれるようになったことです。モデルのプロパティを空の文字列に設定してクリアしようとしましたが、暗号化された値が残ります。

誰もがこれに対するエレガントな解決策を持っていますか? ありがとう!

私のhtmlコードは次のようになります。

<script type="text/javascript" src="https://js.braintreegateway.com/v1/braintree.js"></script>
<script type="text/javascript">
    var braintree = Braintree.create("key");
    braintree.onSubmitEncryptForm('braintree-payment-form');
</script>

@model SubscriptionModel
<form action="@Url.Action("Subscribe", "Home")" method="POST" id="braintree-payment-form">
    <ul>
        <li>
            <div class="text">@Html.TextBoxFor(x => x.CreditInfo.CardholderName, new Dictionary<string, object> { { "data-encrypted-name", "CreditInfo.CardholderName" } })</div>
        </li>
        <li>
            <div class="text">@Html.TextBoxFor(x => x.CreditInfo.CardNumber, new Dictionary<string, object> { { "data-encrypted-name", "CreditInfo.CardNumber" } })</div>
        </li>
        <li>
            <div class="text">@Html.TextBoxFor(x => x.CreditInfo.Cvv,new Dictionary<string, object> { { "data-encrypted-name", "CreditInfo.Cvv" } })</div>
        </li>
        <li>
            <div class="text"> 
                @Html.TextBoxFor(x => x.CreditInfo.ExpirationMonth, new Dictionary<string, object> { { "data-encrypted-name", "CreditInfo.ExpirationMonth" } })<div>
                @Html.TextBoxFor(x => x.CreditInfo.ExpirationYear, new Dictionary<string, object> { { "data-encrypted-name", "CreditInfo.ExpirationYear" } })
            </div>
        </li>
    </ul>
     <button>Submit</button>
</form>
4

1 に答える 1