2013-08-15 3 views
1

.NET MVC 프로젝트에서 Braintree.js를 사용하여 신용 카드 정보를 암호화합니다. 긍정적 인 경우는 잘 작동하고 거래가 성공적입니다.실패한 트랜잭션의 암호화 된 값

문제는 컨트롤러에서 몇 가지 유효성 검사가 있는데 오류가있는 경우보기를 다시 표시하면 신용 카드 필드에 암호화 된 값이 포함됩니다. 빈 문자열에 모델 속성을 설정하여 시도했지만 암호화 된 값은 그대로 유지됩니다.

아무도 이것에 대한 우아한 해결책이 있습니까? 감사! 아래와 같이

<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> 
+1

잘못된 코드를 입력하십시오. – BartoszKP

+0

내 HTML 코드가 추가되었습니다. 다시 말씀 드리 자면 실제 구독이 정상적으로 작동하고 있습니다. 내 문제는 내가보기를 다시 표시하면 텍스트 상자의 데이터가 암호화 된 값으로 대체됩니다. – vsebastian

답변

2

나는 일반 입력 텍스트 상자에 HTML.TextBoxFor 대체하여이 문제를 해결하기 위해 관리 : 당신이 사용하는 경우

<input type="text" autocomplete="off" data-encrypted-name="CreditInfo.CardholderName"/> 

내 HTML 코드는 다음과 같이 보입니다 MVC에서는 data-encrypted-name 값이 모델의 특성과 일치해야 POST에서 올바르게 제출됩니다. 보기를 다시 표시 한 후에도 필드가 지워지지 만 나에게 충분합니다.