“值不能为空。\ r \ n参数名称:输入”

时间:2019-06-20 18:00:07

标签: asp.net-mvc

我拨打了ajax电话。从ajax值传递完全正确,但我收到该错误。我试图找到原因,但未能找到原因。

我尝试调试代码,但没有显示任何意义。

var obj = {
            Mode: mode,
            TissueRequestFeeID: mode == 1 ? 0 : data.TissueRequestFeeID,
            TissueRequestID: viewBagRequestId,
            FeeTypeID: data.FeeTypeID,
            OtherFee: data.OtherFee,
            Fee: data.Fee,
        };

    }

    var TissueRequestFeeobj = {
        TissueRequestFeeData: JSON.stringify(obj)
    }
    console.log(TissueRequestFeeobj);

    var url = rootPath + "api/RequestApi/SaveAndUpdateRequest";
    $.ajax({
        url: url,
        type: 'POST',
        data: TissueRequestFeeobj,
        success: function (TissueRequestFeeID) {
            console.log(TissueRequestFeeID);
        }
    }); 

API代码:

[System.Web.Http.HttpGet]
    [System.Web.Http.ActionName("UpdateTissueRequestFee")]
    public HttpResponseMessage UpdateTissueRequestFee(HttpRequestMessage request,int Mode, int TissueRequestFeeID, int TissueRequestID,
        int FeeTypeID,string Fee,string OtherFee)
    {

        try
        {
            EISDataAccess objDAL = new EISDataAccess();

            int i = 0;
            SqlParameter[] p = new SqlParameter[7];
            p[i] = new SqlParameter("@Mode", SqlDbType.Int);
            p[i].Value = Mode;
            i++;

            p[i] = new SqlParameter("@TissueRequestFeeID", SqlDbType.Int);
            p[i].Value = TissueRequestFeeID;
            i++;

            p[i] = new SqlParameter("@TissueRequestID", SqlDbType.Int);
            p[i].Value = TissueRequestID;
            i++;

            p[i] = new SqlParameter("@OtherFee", SqlDbType.VarChar);
            p[i].Value = OtherFee;
            i++;

            p[i] = new SqlParameter("@Fee", SqlDbType.VarChar);
            p[i].Value = Fee;
            i++;

            p[i] = new SqlParameter("@CreatedBy", SqlDbType.VarChar);
            p[i].Value = SessionManager.Current.UserDetails.AppUserId;
            i++;

            p[i] = new SqlParameter("@ModifiedBy", SqlDbType.VarChar);
            p[i].Value = SessionManager.Current.UserDetails.AppUserId;
            i++;


           var RequestID = objDAL.ExecuteDataset(connectionString, CommandType.StoredProcedure, "Distribution_SaveRequest", p);

            return request.CreateResponse(HttpStatusCode.OK, p[1].Value);
        }
        catch (SqlException ex)
        {
            return ProcessHttpRequestException(request, ex);
        }
        catch (Exception ex)
        {
            return ProcessHttpRequestException(request, ex);
        }
    }

1 个答案:

答案 0 :(得分:0)

您正在ajax调用中传递TissueRequestFeeobj,该调用包含一个带有键TissueRequestFeeData的对象,但在action方法中,已将“ TissueRequestFeeData”的属性作为单独的参数提及。因此,您将获得空值。

相反,您应该尝试直接在ajax调用中传递JSON.stringify(obj)。像这样:

var obj = {
                Mode: mode,
                TissueRequestFeeID: mode == 1 ? 0 : data.TissueRequestFeeID,
                TissueRequestID: viewBagRequestId,
                FeeTypeID: data.FeeTypeID,
                OtherFee: data.OtherFee,
                Fee: data.Fee,
            };

var url = rootPath + "api/RequestApi/SaveAndUpdateRequest";

$.ajax({
        url: url,
        type: 'POST',
        data: JSON.stringify(obj),
        success: function (TissueRequestFeeID) {
            console.log(TissueRequestFeeID);
        }
    });