MVC Razor AJAX呼叫未命中控制器

时间:2018-10-19 14:07:11

标签: c# ajax asp.net-mvc razor

我有一个简单的用例,它只是向我的控制器发送一个AJAX请求并接收结果。我当前的问题是Ajax调用返回成功,并以当前页面的完整html代码作为内容,而不是我的Controller方法的返回值。

我是一名Web开发人员初学者,有关Visual Studio中IIS Express配置的提示也可能会有所帮助。即使这种和平的代码是更大项目的一部分。

我知道有很多类似的问题,但是它们根本没有帮助: javascript ajax call not not hitting controller Asp.net MVC Ajax call not calling controller method

这是我的剃刀代码:

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    @Html.Partial("CEinzelkondition", Model)
    <input id="SubmitButton" type="submit" value="Speichern" />
}

这是我的JS代码:

function calculateRate() {
            $.ajax({
                type: "POST",
                url: "@Url.Action("CalculateRate", "Marzipan")",
                data: "test",
                dataType: "text",
                contentType: "text",
                success: function (response) {
                    alert("success: " + response);
                },
                failure: function (response) {
                    alert("fail: " + response);
                },
                error: function (xhr, desc, error) {
                    window.alert('description: ' + desc);
                    window.alert('error: ' + error);
                }
            });
        };

通过html部分视图中的按钮调用JS函数。

这是我的控制器代码:

[HttpPost]
[ValidateAntiForgeryToken]
public string CalculateRate(string data)
{
    data = "success!";
    return data;
}

1 个答案:

答案 0 :(得分:1)

您已指定[ValidateAntiForgeryToken],但没有将其发布在ajax调用中。您只是在发送一个字符串“ test”。

查看此处...

include antiforgerytoken in ajax post ASP.NET MVC