gpt4 book ai didi

c# - 使用 Ajax.BeginForm 发布数据时的空模型

转载 作者:太空宇宙 更新时间:2023-11-03 13:06:56 25 4
gpt4 key购买 nike

我创建了一个局部 View ,允许用户输入他们的电子邮件并将其添加到订阅者列表中。最初我将其作为标准帖子使用,一切正常。

但是现在我正试图将此作为一个 ajax 调用,出于某种原因,即使表单正在发布到正确的 Controller ,模型总是以 null 形式通过,我无法弄清楚为什么。

以下是我的观点:

父 View :

@Html.Partial("Shared/Newsletter/NewsletterForm", new NewsletterSubscriber())

部分形式:

@using (Ajax.BeginForm("NewsletterSignUp", "Newsletter", new AjaxOptions { HttpMethod = "POST" }))
{
<input type="text" name="EmailAddress" id="newsletter-email" class="basic-input" placeholder="Email Address">
<button id="submit-newsletter" class="basic-submit">Sign Up</button>
<p id="status"></p>
}

Controller :

[HttpPost]
public ActionResult NewsletterSignUp(NewsletterSubscriber model)
{
if (!ModelState.IsValid)
{
return Content("Please enter a valid e-mail address");
}

// Do logic...
}

型号:

public class NewsletterSubscriber
{
[Required]
[EmailAddress]
[StringLength(300)]
public string EmailAddress { get; set; }
}

脚本:

<script src="/scripts/jquery.validate.min.js"></script>
<script src="/scripts/jquery.validate.unobtrusive.min.js"></script>
<script src="/scripts/jquery.unobtrusive-ajax.min.js"></script>
<script>
$(function() {

$('#submit-newsletter').on('click', function(e) {
e.preventDefault();

$.post('/umbraco/surface/Newsletter/NewsletterSignUp', function (data) {
console.log(data);
$('#status').show().text(data);
});
});

});
</script>

就像我说的,当我单步执行代码时,帖子会命中正确的 Controller ,但模型始终为空。

我哪里错了?

最佳答案

我刚刚意识到我有 ajax 表单为我处理提交,我正试图在另一个脚本中手动发布表单。一旦我删除了额外的脚本,它就起作用了。

(漫长的一天结束了,我错过了这个明显的错误!)

关于c# - 使用 Ajax.BeginForm 发布数据时的空模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30463755/

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