You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从JavaScript调用RazorPage中指定的OnGet方法?

问题:Razor Page自定义OnGet方法无法触发,请求始终进入默认OnGet

核心原因:URL参数格式错误

你构造请求URL时,第二个参数使用了问号?,这会导致handler参数的值被识别为NextEmployee?employeeId,而非预期的NextEmployee,因此框架找不到对应的OnGetNextEmployee方法,只能 fallback 到默认的OnGet。

解决方案:修正URL参数分隔符

将URL中第二个参数的?替换为&,正确的URL格式应为:

var wnd = window.parent.$("#DetailWnd").data("kendoWindow");
var _url = "/MyRazorPage?handler=NextEmployee&employeeId=" + $('#EmployeeId').val();
wnd.refresh({
    url: _url
});

额外优化建议

你当前在自定义方法中直接调用OnGet方法的方式不符合Razor Page的请求处理规范,建议改用RedirectToPage进行重定向,确保请求流程正确:

public IActionResult OnGetNextEmployee(int employeeId)
{
    int index = ISP.EmployeeIds.FindIndex(id => id == employeeId);

    if(index == -1 || index == ISP.EmployeeIds.Count - 1) 
    {
        return RedirectToPage("./MyRazorPage", new { employeeId });
    }
    else
    {
        int nextEmployeeId = ISP.EmployeeIds[index + 1];
        return RedirectToPage("./MyRazorPage", new { employeeId = nextEmployeeId });
    }
}

public IActionResult OnGetPreviousEmployee(int employeeId)
{
    int index = ISP.EmployeeIds.FindIndex(id => id == employeeId);

    if (index == -1 || index == 0) 
    {
        return RedirectToPage("./MyRazorPage", new { employeeId });
    }
    else
    {
        int previousEmployeeId = ISP.EmployeeIds[index - 1];
        return RedirectToPage("./MyRazorPage", new { employeeId = previousEmployeeId });
    }
}

内容的提问来源于stack exchange,提问作者Legion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 20:56:18