使用Html.BeginForm("ActionName", "ControllerName", FormMethod.Post, new { id = "formInfo" })提交数据的问题

来源:互联网 发布:安防网络系统 编辑:程序博客网 时间:2024/06/08 17:08

在程序开发中,发现一个问题,在cshtml中,使用

@using (Html.BeginForm("Save", "ITProject", FormMethod.Post, new { id = "formInfo" }))

的方式将表单的数据,用Ajax的方式传给Controller。

但是发现有时候参数无法传到后台。

例如,Ajax的写法是:

$.ajax({
            url: $("#formInfo").attr("action"),
            data: newProjectInfo,
            type: "post",
            dataType: 'json',
            success: function (r) {
                if (r.state == "success") {
                    $.modalMsg(r.message);
                    $.loading(false);
                }
                else {
                    $.modalAlert(r.message);
                    $.loading(false);
                }
            }
           , error: function (r) {
               $.ajaxErrorProcess(r);
               $.loading(false);
           }
        })


而在Controller中,处理函数的写法是:

        public JsonResult Save(DomainEntities.Models.ITProject.ProjectNewInfo projectInfo)
        {
            try
            {
            _ProjectService.SaveNewProjectInfo(projectInfo);
            return Success("保存成功");
            }
            catch(Exception ex)
            {
                FileLogger.Error("保存信息失败", ex);
                return Error($"保存失败,{ex.Message}");
            }
        }


在调试中发现,有时候Save方法的参数(projectInfo)并没有获得Ajax的data值(newProjectInfo)。

解决方式是:

在调用Ajax是,显示的指定

data: {projectInfo:newProjectInfo}

修改为上述格式后,传值成功。

明白人可以帮助解释一下。


0 0
原创粉丝点击