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

ASP.NET Razor Pages ATM信用卡余额查询校验错误排查求助

问题根源

你当前的OnPost处理逻辑仅校验了输入字段的格式合法性(比如必填项是否为空、长度是否符合要求),完全没有对接数据库做账号信息匹配校验,只要输入符合字段规则就会直接跳转到User页,这是问题的核心原因。

修复步骤

1. 修改Index.cshtml.cs的提交处理逻辑

替换原有OnPost方法的代码即可:

public IActionResult OnPost()
{
    // 先校验输入格式是否合法
    if (!ModelState.IsValid)
    {
        return Page();
    }

    // 对接数据库查询匹配的账号
    var matchedAccount = _db.Accounts.FirstOrDefault(a =>
        a.Name == Account.Name.Trim()
        && a.Surname == Account.Surname.Trim()
        && a.Pin == Account.Pin);

    // 匹配成功跳转到用户页,同时传递账号ID用于查询余额
    if (matchedAccount != null)
    {
        return RedirectToPage("User", new { id = matchedAccount.Id });
    }

    // 匹配失败添加错误提示,返回当前页
    ModelState.AddModelError(string.Empty, "姓名、姓氏或PIN码输入错误,请重新核对后提交");
    return Page();
}

如果需要忽略姓名/姓氏的大小写匹配,可以将对应匹配条件改为a.Name.Equals(Account.Name.Trim(), StringComparison.OrdinalIgnoreCase)即可。

2. 补充User页的逻辑(用于展示余额)

你目前只贴了User页的前端代码,需要先补充后端逻辑(User.cshtml.cs):

using BanlAcc.Model;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore;

namespace BanlAcc.Pages.BankAcc
{
    public class AccountModel : PageModel
    {
        private readonly ApplicationDbContext _db;

        public AccountModel(ApplicationDbContext db)
        {
            _db = db;
        }

        public Account UserAccount { get; set; }

        public async Task<IActionResult> OnGetAsync(int id)
        {
            UserAccount = await _db.Accounts.FindAsync(id);
            if (UserAccount == null)
            {
                return RedirectToPage("Index");
            }
            return Page();
        }
    }
}

再修改User.cshtml前端展示内容:

@page
@model BanlAcc.Pages.BankAcc.AccountModel
<br />

<h2 class="text-info">欢迎您,@Model.UserAccount.Name @Model.UserAccount.Surname</h2>
<h3>当前卡内余额:@Model.UserAccount.Amount 元</h3>

安全提示

PIN码属于敏感信息,生产环境切勿明文存储在数据库中,建议使用BCrypt等加密算法做哈希存储,校验时将用户输入的PIN码做哈希后再和数据库存储值比对,避免信息泄露风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:06:01