C# ASP.net MVC无法从控制器获取值

C# ASP.net MVC无法从控制器获取值,c#,asp.net-mvc,devexpress,C#,Asp.net Mvc,Devexpress,在我的ASP.net MVC应用程序中,我有一个按钮,用于调用需要更长时间(>60分钟)才能完成的控制器操作。为了使会话保持活动状态,我正在使用setInterval函数 参考: 视图看起来像: @Html.DevExpress().Button(settings => { settings.Name = "LoadData"; s

在我的ASP.net MVC应用程序中,我有一个按钮,用于调用需要更长时间(>60分钟)才能完成的控制器操作。为了使会话保持活动状态,我正在使用setInterval函数

参考:

视图看起来像:

@Html.DevExpress().Button(settings =>
                        {
                            settings.Name = "LoadData";
                            settings.Text = "Load Data";
                            settings.ClientSideEvents.Click = string.Format("function(s, e) {{ OnButtonClick(s, e, '{0}', '{1}'); }}", Url.Action("Start", "ImportData", null), Url.Action("alive", "ImportData", null));
                            settings.UseSubmitBehavior = false;
                        }).GetHtml()
function keepalive()
{
    console.log("I am alive");
    $.ajax({
        type: 'POST',
        url: '/ImportData/alive',
        dataType: "text",
        dataType: 'json',
        contentType: "application/json; charset=utf-8",
        success: function (msg) {
            debugger;
            console.log("pinging");
        },
        Error: function (xhr) {
            debugger;
            alert(xhr)
        },
        });
 }
我的OnButtonClick函数看起来:

function OnButtonClick(s, e, startUrl, progressUrl) {
    //debugger;
    StartActionOnServer(startUrl);
    setInterval(keepalive, 600000); //every 10 minutes. 
}
保持活力看起来像:

@Html.DevExpress().Button(settings =>
                        {
                            settings.Name = "LoadData";
                            settings.Text = "Load Data";
                            settings.ClientSideEvents.Click = string.Format("function(s, e) {{ OnButtonClick(s, e, '{0}', '{1}'); }}", Url.Action("Start", "ImportData", null), Url.Action("alive", "ImportData", null));
                            settings.UseSubmitBehavior = false;
                        }).GetHtml()
function keepalive()
{
    console.log("I am alive");
    $.ajax({
        type: 'POST',
        url: '/ImportData/alive',
        dataType: "text",
        dataType: 'json',
        contentType: "application/json; charset=utf-8",
        success: function (msg) {
            debugger;
            console.log("pinging");
        },
        Error: function (xhr) {
            debugger;
            alert(xhr)
        },
        });
 }
我的问题是,代码并没有命中我的控制器函数,所以我永远无法在成功块中返回结果

success: function (msg) {
            debugger;
            console.log("pinging");
        },
控制器动作功能:

[HttpPost]
    public ActionResult alive()
    {
        var result = "Still Alive";
        return Content(result);
    }
而不是我硬编码:console.log(“我还活着”);我想退回这个

我的console.log看起来像附加的screeshot

知道如何从控制器中获取价值吗?我做错了什么。 谢谢。

这解决了我的问题:

function keepalive()
{
    console.log("I am alive");
    $.ajax({
        type: 'POST',
        url: '/ImportData/alive',
        dataType: "text",
        contentType: "text",
        success: function (msg) {
            console.log(msg);
        },
        Error: function (xhr) {
            alert(xhr)
        },
    });
 }

您是否在控制台中看到“网络”选项卡以查看url路径是否正确?
“我从未在成功块中返回结果”
-然后您返回了什么?请注意,您可能会忽略错误,因为您错误地键入了
error
属性(您有
error
)。在浏览器的调试工具中,服务器的实际响应是什么?这是MVC还是Web Api?另外,您不应该接收
JsonResult
而不是
Content
返回吗?或者将内容类型改为text?如果将其更改为text,则响应(在回调时的msg变量中)应该是从控制器返回的内容。