【问题标题】:ASP.NET MVC ajax post function sending null valuesASP.NET MVC ajax post 函数发送空值
【发布时间】:2018-07-18 13:20:41
【问题描述】:

如果已经有答案,我很抱歉,我找不到答案。

我有一个将数据发布到控制器的 ajax 函数,但是一些正在发送的数据具有空值。这是我的设置:

我有 3 个参数被发送到控制器:data、rptnew 和 recid。 data 参数是一个包含 db 列名和数据的字符串。 rptnew 和 recid 只包含一个值。

var data = "{'DATEWORKING':'" + $('#HEADER-DATEWORKING').val() +
        "','TRAYS':'" + $('#TRAYS').val() +
        "','M26850':'" + $('#INCOMINGMAIL5').val() +
        "','M26860':'" + $('#INCOMINGMAIL6').val() +
        "','X26930':'" + $('#INCOMINGMAIL9').val() +
        "','T26920':'" + $('#INCOMINGMAIL8').val() +
        "','C2501':'" + $('#INCOMINGMAIL1').val()+ "'}";
rptnew = '0';
recid = '2347';

功能帖:

function postdata(data, section, recid, rptnew) {
$.ajax
    ({
        type: 'POST',
        url: 'UpdateDB_IR’,
        async: false,
        data: ( data, rptnew, recid ),
        dataType: "json",
    success: function (result) {
        if (result) {
            alert("Data Saved Successfully");
            afterpostfunctions();
        }
        else
            alert(result);
    },
    error: function (result) {
        alert("Error Occured, Try Again");
        console.log(result);
    }
});

控制器:

public ActionResult UpdateDB_IR(DATABASE_RECORDS dbData, string rptNew, string recId)

问题: dbData 包含来自变量数据的列和值。 rptNew 不包含来自 rptnew 的值。 recId 不包含来自 recid 的值。

如果我像这样对数据进行字符串化:

JSON.stringify({ dbData: data, rptNew: rptnew, recId: recid });

dbData 不包含数据中的值。 rptNew 包含来自 rptnew 的值。 recId 包含来自 recid 的值。

我不知道如何将所有值正确发送到控制器。有什么建议吗?

数据库类:

namespace REPORTSYS.Models
{
using System;
using System.Collections.Generic;

public partial class DATABASE_RECORDS
{
    public int CBAD_ID { get; set; }
    public int TRAYS { get; set; }
    public int M26850 { get; set; }
    public int M26860 { get; set; }
    public int X26930 { get; set; }
    public int T26920 { get; set; }
    public int C2501 { get; set; }
}
}

【问题讨论】:

    标签: javascript ajax asp.net-mvc


    【解决方案1】:
    function postdata(data, section, recid, rptnew) {
    $.ajax
        ({
            type: 'POST',
            url: 'UpdateDB_IR’,
            async: false,
            data: { dbData : data, rptNew : rptnew, recId : recid },
            dataType: "json",
            success: function (result) {
            if (result) {
                alert("Data Saved Successfully");
                afterpostfunctions();
            }
            else
                alert(result);
        },
        error: function (result) {
            alert("Error Occured, Try Again");
            console.log(result);
        }
    });
    

    通过密钥向控制器发送数据。在上面的函数中修改。

    【讨论】:

    • 我试过你的解决方案,dbData 包含一个空值,rptNew 和 recId 包含值。
    • 可以分享DATABASE_RECORDS的类结构吗?
    • 命名空间 REPORTSYS.Models { 使用 System;使用 System.Collections.Generic;公共部分类 DATABASE_RECORDS { public int CBAD_ID { get;放; } 公共 int 托盘 { 获取;放; } 公共 int M26850 { 获取;放; } 公共 int M26860 { 获取;放; } 公共 int X26930 { 获取;放; } 公共 int T26920 { 获取;放; } 公共 int C2501 { 获取;放; } } }
    • 抱歉,我不确定如何格式化该代码块。编辑:我发布了原始帖子中格式化的数据库类。
    【解决方案2】:

    在数据上试试这个

    数据:{ dbData:数据,rptNew:rptnew,recId:recid }

    不要使用字符串化。

    【讨论】:

    • 使用此解决方案导致 dbData 包含空值。 rptNew 和 recId 确实有值。
    • 尝试在模型中使用您需要的所有数据,例如。 public class DB_IR_UpdateRequest { public DATABASE_RECORDS dbData {get;set;} public string rptNew{get;set;} public string recId{get;set;} } 并更改 public ActionResult UpdateDB_IR(DB_IR_UpdateRequest request)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-17
    相关资源
    最近更新 更多