【问题标题】:AJAX Call to Controller from Partial View从局部视图中对控制器的 AJAX 调用
【发布时间】:2021-12-19 07:06:32
【问题描述】:

我有一个登录页面,它是一个局部视图,并且想在页面显示时显示数据库连接状态。

我的想法是通过AJAX调用控制器中的数据库测试函数,返回状态字符串。但是控制器函数没有被触发,“成功”函数只是得到一个 HTML 作为响应。

经过数小时的研究但没有成功。

你能帮忙吗?谢谢!

控制器返回登录页面:

public ActionResult Login()
{
    return PartialView();
}

登录页面中的 AJAX 调用:

$(document).ready(function () {
    setTimeout(testConn, 100);
});

function testConn() {
    $('#msg').text('Connecting database...');
    $.ajax({
        type: 'GET',
        url: '@Url.Action("TestDbConn", "Utils")',
        contentType: 'application/json; charset=utf-8',
        success: function (s) {
            $('#msg').text(s); // s is HTML, not a string what I want
        }
    });
}

UtilsController中的TestDbConn函数:

public JsonResult TestDbConn()
{
    string result = "";

    try
    {
        var user = db.UserGroup.FirstOrDefault();

        if (user == null)
        {
            result = "No available data!";
        }
        else
        {
            result = "Database connected!";
        }
    }
    catch (Exception ex)
    {
        result = $"Unable to connect:{ex.Message}";
    }

    return Json(result, JsonRequestBehavior.AllowGet);
}

【问题讨论】:

  • 请您也显示味精控件吗?
  • 你是说#msg吗?这是一个 id="msg" 的 html div 元素。谢谢!

标签: asp.net ajax asp.net-mvc


【解决方案1】:

想通了。这与 PartialView 无关。 只需将其从 Web.Config 的授权部分中删除即可。

<deny users="?" />

此行可防止用户在未登录时访问 Utils 控制器,[AllowAnonymous] 标记无济于事!

【讨论】:

    猜你喜欢
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多