Razor Pages 是 ASP.NET Core 中的一种页面模型框架,它允许开发者使用 Razor 语法来创建动态网页。Razor Pages 将页面逻辑和页面呈现分离,使得代码更加模块化和易于维护。
AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。GET 请求是一种 HTTP 请求方法,用于从服务器检索特定资源。
在 Razor Pages 中,可以通过 PageModel
类来定义页面的数据模型。这些数据模型可以通过 Razor 视图中的 @Model
关键字访问。
假设我们有一个 Razor Page,其中包含一个按钮,点击该按钮会通过 AJAX GET 请求获取数据,并更新页面上的某个元素。
public class IndexModel : PageModel
{
public string Data { get; set; }
public void OnGet()
{
Data = "Initial data";
}
public IActionResult OnGetFetchData()
{
// 模拟从数据库或其他服务获取数据
Data = "Fetched data at " + DateTime.Now.ToString();
return new JsonResult(new { data = Data });
}
}
@page
@model IndexModel
<!DOCTYPE html>
<html>
<head>
<title>Razor Pages Example</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
<div id="dataContainer">@Model.Data</div>
<button id="fetchButton">Fetch Data</button>
<script>
$(document).ready(function() {
$('#fetchButton').click(function() {
$.ajax({
url: '/Index?handler=FetchData',
type: 'GET',
success: function(response) {
$('#dataContainer').text(response.data);
},
error: function(xhr, status, error) {
console.error("Error fetching data: ", error);
}
});
});
});
</script>
</body>
</html>
原因:
解决方法:
/Index?handler=FetchData
)。@Model
关键字正确引用了 PageModel 中的属性。通过以上步骤,可以有效地解决 AJAX GET 请求后无法访问 Razor 视图绑定变量值的问题。
领取专属 10元无门槛券
手把手带您无忧上云