Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.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
使用jquery post将表单值传递给控制器为null_Jquery_Asp.net Mvc_Post - Fatal编程技术网

使用jquery post将表单值传递给控制器为null

使用jquery post将表单值传递给控制器为null,jquery,asp.net-mvc,post,Jquery,Asp.net Mvc,Post,在Asp.NETMVC项目中,我的cshtml页面中有一个表单。我想用jquery post适配器将表单值发送到控制器。我正在使用.serilize()函数来获取表单值,当我警告序列化的值时,我可以将它们作为字符串获取,但是,当我将其发送到控制器时,它将以null形式发布。这是我的cshtml页面: EditPage.cshtml @model Models.PROJECTS @using (Html.BeginForm(null,null,FormMethod.Post,new {id="E

在Asp.NETMVC项目中,我的cshtml页面中有一个表单。我想用jquery post适配器将表单值发送到控制器。我正在使用.serilize()函数来获取表单值,当我警告序列化的值时,我可以将它们作为字符串获取,但是,当我将其发送到控制器时,它将以null形式发布。这是我的cshtml页面:

EditPage.cshtml

@model Models.PROJECTS

@using (Html.BeginForm(null,null,FormMethod.Post,new {id="EditForm"}))
{
    @*Html.AntiForgeryToken()*@

    <div class="form-horizontal">

        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        @Html.HiddenFor(model => model.PROJE_NO)

        <div class="form-group">
            @Html.LabelFor(model => model.PROJECTNAME, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.PROJECTNAME, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.PROJECTNAME, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.PROJECTCODE, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.PROJECTCODE, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.PROJECTCODE, "", new { @class = "text-danger" })
            </div>
        </div>
        .
        .
        .



        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <i class="fa fa-save fa-lg" id="saveBtn" style="cursor:pointer;color:green" title="Edit Project"></i>&nbsp;

            </div>
        </div>
    </div>
     }
    @section scripts
     {

    <script language="javascript">

    $(document).ready(function() {


            $(document).on("click", "#saveBtn", function () {


                var formData = $('#EditForm').serialize();

                alert(JSON.stringify(formData));

                $.post('@Url.Action("EditProject", "Home")',
                    {
                        project: JSON.stringify(formData)

                    }).done(function(data) {

                    if (data.success) {

                        alertify.success(data.message);

                    } else {

                        alertify.error(data.message);
                    }
                }).fail(function() {
                    alertify.error('Error while editing project');
                });

            });
        });
   </script>
对于EditProject操作,参数project为null。我不知道我哪里做错了。
非常感谢您的帮助。

在评论之后,要解决此问题,您可以使用两个更新:

1-您不需要使用
JSON.stringify(formData)
,因为当您使用
.serialize()
时,它会像
查询字符串一样生成数据,因此需要使用默认的
contentType
应用程序/x-www-form-urlencoded;charset=UTF-8
,而不是JSON

2-通过替换以下内容,对
js
功能进行少量更改:

{
    project: JSON.stringify(formData)
}
通过
formData

js将是:

$(document).ready(function () {
    $(document).on("click", "#saveBtn", function () {

        var formData = $('#EditForm').serialize();

        $.post('@Url.Action("EditProject", "Home")', formData)
            .done(function (data) {
                if (data.success) {

                    alertify.success(data.message);

                } else {

                    alertify.error(data.message);
                }
            }).fail(function () {
                //alertify.error('Error while editing project');
            });
    });
});

这不是因为
proje
proje:JSON.stringify(formData)
中,我认为应该是
project:JSON.stringify(formData)
@Sajid非常感谢您的帮助。这在项目中实际上是相同的。对不起,我打错了。当我在这里写它时,我错误地把它写为“proje”,不客气,所以更新后它总是空的?它被发布到动作中为空。我将表单的操作定义为null,但它实际上似乎要执行另一个操作。我还尝试使用.preventDefault();方法它也不起作用。您能否将
alert(JSON.stringify(formData))的结果添加到问题中
项目
类,我想试试这个。谢谢,@Sajid它成功了。使用$.ajax({})方法也有效。
$(document).ready(function () {
    $(document).on("click", "#saveBtn", function () {

        var formData = $('#EditForm').serialize();

        $.post('@Url.Action("EditProject", "Home")', formData)
            .done(function (data) {
                if (data.success) {

                    alertify.success(data.message);

                } else {

                    alertify.error(data.message);
                }
            }).fail(function () {
                //alertify.error('Error while editing project');
            });
    });
});