Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Ajax.BeginForm发布数据时为空模型_C#_Asp.net Mvc - Fatal编程技术网

C# 使用Ajax.BeginForm发布数据时为空模型

C# 使用Ajax.BeginForm发布数据时为空模型,c#,asp.net-mvc,C#,Asp.net Mvc,我创建了一个局部视图,允许用户输入他们的电子邮件并添加到订户列表中。最初,我把这个职位作为标准职位,一切都很好 然而,现在我试图将其作为一个ajax调用,出于某种原因,即使表单发布到了正确的控制器,但模型总是显示为null,我不知道为什么 以下是我的看法: 父视图: @Html.Partial("Shared/Newsletter/NewsletterForm", new NewsletterSubscriber()) @using (Ajax.BeginForm("NewsletterSig

我创建了一个局部视图,允许用户输入他们的电子邮件并添加到订户列表中。最初,我把这个职位作为标准职位,一切都很好

然而,现在我试图将其作为一个ajax调用,出于某种原因,即使表单发布到了正确的控制器,但模型总是显示为null,我不知道为什么

以下是我的看法:

父视图:

@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>
}
[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>
表单部分:

@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>
}
[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>
模型:

@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>
}
[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>
脚本:

@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>
}
[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>

$(函数(){
$(“#提交时事通讯”)。在('click',函数(e){
e、 预防默认值();
$.post(“/umbraco/surface/Newsletter/Newsletter注册”,功能(数据){
控制台日志(数据);
$('#status').show().text(数据);
});
});
});
就像我说的,当我一步一步地完成代码时,post正在命中正确的控制器,但是模型总是以null的形式通过


我哪里出错了?

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


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

你试过将EmailAddress更改为HTML助手吗?是的,我试过使用@HTML.EditorFor(model=>model.Email),但它仍然是空的,@HTML.TextBoxFor(model=>model.EmailAddress)呢?事实上我想我刚刚发现了问题-是脚本:-)