所以我有这个JavaScript代码:

function AddToStuff(somethingID) {
    var stuffID = document.getElementById('StuffID').innerText;

    alert("First Alert: " + stuffID);

    if (stuffID == -1) {
        document.getElementById('StuffID').innerText = 0;
        stuffID = 0;
    }

    alert("Second Alert: " + stuffID)
    StuffCallback.fire(somethingID, stuffID);
}

$(document).ready(function () {
    initializeStuff();
});

var StuffCallback = $.Callbacks();

function initializeStuff() {
    StuffCallback.add(function (somethingID, stuffID) {
        $.ajax({
            url: "pos/Stuff",
            type: "GET",
            traditional: true,
            data: {
                somethingID: somethingID,
                stuffID: stuffID
            },

            success: function (result, textStatus, xhr) {
                alert("Third Alert: " + stuffID);
                var contentArea = $("#Stuff");

                contentArea.html(result);
                $("#Stuff").hide();
                $("#Stuff").show({ duration: 250 });
            }
        });
    });
}


和此C#代码:

public ActionResult Stuff(int somethingID = 0, int stuffID = -1)
    {
            if (stuffID == -1)
            {
                //do something
            }
            else if (stuffID == 0)
            {
               //do something else
            }
            else
            {
                //do something else
            }
        }

        return View();
    }
}


问题在于C#方法的stuffID始终为-1,因此执行第一个“ if”情况。

当页面加载并且$(document).ready调用initializeStuff时,stuffID为-1,因此它将根据需要执行第一个“ if”情况。稍后,当调用AddToStuff()时,由于用户单击了某些内容,因此它将读取我已初始化为-1的元素StuffID。 First Alert确实显示-1。然后,在AddToStuff()内的“ if”中,将StuffID更改为0,并且第二个警报的确显示0。

但是然后我有了Javascript函数AddToStuff再次调用C#函数,但是目标是让第二个参数(stuffID)为0而不是-1。甚至第三个警报也将显示为0。但是在C#函数中,stuffID仍为-1。

我不能传递0。任何帮助将不胜感激。

注意:我将代码一般化为“某物”和“东西”,但是那部分应该可以正常工作-当我希望它们调用时,函数会调用它们。

最佳答案

意见建议:


使用浏览器中的提琴手或开发人员工具查看传递给服务器的内容(0或-1)?
如果服务器接收的数据不正确,默认值Stuff(int somethingID = 0, int stuffID = -1)也可能导致问题。
在Ajax调用dataType: 'json'中设置数据类型
如果使用的是GET请求,请确保已正确设置data对象

07-27 19:36