从局部视图中对控制器的 AJAX 调用

Posted

技术标签:

【中文标题】从局部视图中对控制器的 AJAX 调用【英文标题】:AJAX Call to Controller from Partial View 【发布时间】: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 元素。谢谢! 【参考方案1】:

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

<deny users="?" />

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

【讨论】:

以上是关于从局部视图中对控制器的 AJAX 调用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET MVC 中使用 Ajax 调用刷新局部视图?

在rails中对控制器操作进行ajax调用

在 asp.net mvc 中对控制器进行简单的 Ajax 调用

在 codeigniter 中使用 AJAX 从视图调用控制器函数并从 db 检索行

在asp.net mvc中对控制器进行简单的Ajax调用

ASP.NET MVC 通用局部视图模式