如何编写运行一次的代码

时间:2015-07-15 18:02:53

标签: c# .net asp.net-mvc

基本上,我有一个包含两种形式的页面,两种形式都使用相同的代码来验证数据:

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中调用,但我会而是一次处理一件)。也就是说,只要HICN文本字段中有代码,hicnExists.Any()就会成立。

我该怎么办才能让这段代码只运行一次?

1 个答案:

答案 0 :(得分:0)

使hicnExists成为可以为空的类静态类变量。在调用函数时测试它是否为null。如果它为null,请运行查询并设置值。设置该值后,查询将不会再次运行当前事务的剩余部分。

如果要在事务之间缓存结果,那么我建议设置会话cookie或使用服务器端会话变量。