Я пытаюсь использовать DropinUI для оплаты Braintree, и для его настройки необходимо отправить сгенерированный токен в функцию javascript на моей странице. У меня есть следующая разметка на моей странице Razor:
<div id="dropin-container"></div>
<button id="submit-button">Request payment method</button>
<script>
function configureBraintreeClient(clientToken) {
var button = document.querySelector('#submit-button');
braintree.dropin.create({
authorization: clientToken,
container: '#dropin-container'
}, function (createErr, instance) {
button.addEventListener('click', function () {
instance.requestPaymentMethod(function (requestPaymentMethodErr, payload) {
// Submit payload.nonce to your server
});
});
});
}
</script>
div # dropin-container заполняется результатом функции configureBraintreeClient. Итак, мне нужно передать clientToken при загрузке страницы.
Моя модель страницы для генерации токена клиента:
public class IndexModel : PageModel
{
private readonly IJSRuntime _jsRuntime;
public IndexModel(IJSRuntime jsRuntime)
{
_jsRuntime = jsRuntime;
}
public IActionResult OnGet()
{
// Create gateway
var gateway = new BraintreeGateway
{
Environment = Environment.SANDBOX,
MerchantId = "xxxxxxx",
PublicKey = "xxxxxxx",
PrivateKey = "xxxxxxx"
};
var clientToken = gateway.ClientToken.Generate();
JSRuntimeExtensions.InvokeVoidAsync(_jsRuntime, "configureBraintreeClient", clientToken);
// Not sure if this is needed, doesn't work with return type of
// void and this line removed either.
Page();
}
}
Это не работает. DIV никогда не заполняется.
Я могу вставить клиентский токен непосредственно в разметку, и он отлично работает , так что он как-то связан с передачей клиентского токена на страницу со страницы. модель. Разве я не должен использовать расширение JSRuntime?
Я попытался установить клиентский токен как свойство модели и вставить его в функцию с синтаксисом бритвы, например authorization: @Model.ClientToken
, но он не работает.
Я пытался копатьчтобы лучше понять жизненный цикл страницы, но ничего, что я нашел, не помогло мне разобраться в этой проблеме.
Я не вижу ошибок в консоли разработчика моего браузера или в Visual Studio, но я не знаюмного об отладке javascript в ASP .NET Core.
Как правильно передать параметр в функцию javascript, которая обновляет div как этот?