gpt4 book ai didi

c# - 如何在 ASP.NET ApiController 中捕获 g-recaptcha-response?

转载 作者:行者123 更新时间:2023-11-30 12:42:30 25 4
gpt4 key购买 nike

我正在尝试将带有 ReCaptcha 的表单发布到 ApiController。

<form>
<label for="name">Name:</label>
<input id="name" name="name" ><br/>
<label for="email">Email:</label>
<input id="email" name="email" type="email" ><br/>
<div class="g-recaptcha" data-sitekey="some_site_key"></div>
<input type="submit" value="Submit"/>
</form>

<script src="https://www.google.com/recaptcha/api.js"></script>
<script>
$(function () {
$('form').submit(function (event) {
var data = $('form').serialize();
console.log('form data: ', data);
$.post("api/test", data,
function (data) {
alert('success');
});
event.preventDefault();
});
});
</script>

console.log() 语句中,我可以看到张贴的值在 nameemail 名称下g-recaptcha-response

我想我可以在 ApiController 中有一个 View 模型,如下所示:

public IHttpActionResult Post(FormModel model)
{
// automatic model binding to get the posted data.
}

public class FormModel
{
public string Name { get; set; }
public string Email { get; set; }
public string GRecaptchaResponse { get; set; }
}

但显然没有规则将g-recaptcha-response绑定(bind)到GRecaptchaResponse。并且有效的属性名称不应包含破折号 -

那么问题来了,我们如何才能在服务端(ApiController)接收到g-recaptcha-response值呢?

最佳答案

这是我发现的:

在 ApiController 中:

public async Task Post()
{
var obj = await Request.Content.ReadAsAsync<JObject>();
var model = obj.ToObject<FormModel>();
//...
}

对于FormModel,使用[JsonProperty]:

public class FormModel
{
public string Name { get; set; }
public string Email { get; set; }

[JsonProperty("g-recaptcha-response")]
public string GRecaptchaResponse { get; set; }
}

关于c# - 如何在 ASP.NET ApiController 中捕获 g-recaptcha-response?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33635376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com