Msgstr "Значение не может быть нулевым. \ R \ nИмя параметра: ввод" - PullRequest
0 голосов
/ 20 июня 2019

Я сделал звонок 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 голосов
/ 20 июня 2019

Вы передаете TissueRequestFeeobj в своем вызове ajax, который содержит объект с ключом TissueRequestFeeData, но в методе действия атрибуты `TissueRequestFeeData 'были упомянуты как отдельные параметры. Следовательно, вы получаете нулевые значения.

Вместо этого вы должны попробовать передать JSON.stringify(obj) непосредственно в вызове ajax. Как то так:

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);
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...