从局部视图中对控制器的 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 调用刷新局部视图?
在 asp.net mvc 中对控制器进行简单的 Ajax 调用