如何编写只运行一次的代码
本文关键字:一次 代码 何编写 运行 | 更新日期: 2023-09-27 18:02:57
基本上,我有一个包含两个表单的页面,它们都使用相同的代码来验证数据:
public ActionResult DoValCheck(ValidationCheckObject aValCheckHelper)
{
var recID = int.Parse(aValCheckHelper.RecordID);
var hicnExists = UnitOfWork.McaUniqueRecordRepository.FindBy(m => m.HICN == aValCheckHelper.HICN);
var ssnExists = UnitOfWork.McaUniqueRecordRepository.FindBy(m => m.Injured_Party.SSN == aValCheckHelper.SSN);
if ((UnitOfWork.McaUniqueRecordRepository.FindBy(m => m.Record_ID == recID && m.HICN == aValCheckHelper.HICN).Any()) ||
UnitOfWork.McaUniqueRecordRepository.FindBy(m => m.Record_ID == recID && m.Injured_Party.SSN == aValCheckHelper.SSN).Any())
{
return Json(false);
}
if (hicnExists.Any())
{
return Json(new { Success = hicnExists.Any(), RecordID = (hicnExists.Any() ? hicnExists.First().Record_ID : -1) });
}
if (ssnExists.Any())
{
return Json(new { Success = ssnExists.Any(), RecordID = (ssnExists.Any() ? ssnExists.First().Record_ID : -1) });
}
else
{
return Json(false);
}
}
现在的问题是,这段代码被设置为在条件为真时运行…所以只要hicnExists.Any()
为真,这段代码就会运行(这段代码在我的JavaScript中被调用,但我宁愿一次处理一段)。也就是说,只要hcn文本域中有代码,hicnExists.Any()
就为真。
我怎么做才能只允许这个代码运行一次?
使hicnExists
为可空的静态类级变量。当函数被调用时,测试它是否为null。如果它为空,则运行查询并设置该值。一旦设置了该值,查询将不会在当前事务的剩余时间内再次运行。
如果您想在事务之间缓存结果,那么我建议设置会话cookie或使用服务器端会话变量。