从模型返回错误

时间:2016-03-03 08:45:37

标签: c# asp.net

我有以下型号:

   internal static List<Contracts.DataContracts.Report> GetReportsForSearch(string searchVal, string searchParam)
    {
        var param1 = new SqlParameter("@SearchVal", searchVal);
        var ctx = new StradaDataReviewContext2();
        var reports = new List<Contracts.DataContracts.Report>();

        try 
        {
    //Validate param1 here and return false if the requirment are not met
        }
    catch(Exception e)
    {
    //Throw
    }
}

param1 here这是用户输入的值,我想在此验证它,如果不满足要求,我想返回错误。

但是如何从模型中返回错误?方法属于List类型,我不能只在这个方法中编写return false

有任何建议怎么做?

1 个答案:

答案 0 :(得分:1)

当不满足要求时,你没有想过抛出异常是好的。我们不应该使用例外来控制程序流程。

我脑子里有两种选择:

<强> 1。使用对象

将您的GetReportsForSearch方法修改为以下签名:

internal static List<Contracts.DataContracts.Report> GetReportsForSearch(string searchVal,
                                                      string searchParam, ReportRequestor requestor)
{
    var param1 = new SqlParameter("@SearchVal", searchVal);
    var ctx = new StradaDataReviewContext2();
    var reports = new List<Contracts.DataContracts.Report>();

    try 
    {
        //Validate param1 here and call RequirementsAreNotMet method if the requirements are not met
        requestor.RequirementsAreNotMet();
    }
    catch(Exception e)
    {
    //Throw
    }
}

然后,您可以在ReportRequestor class

中实现负责处理此情况的代码
public class ReportRequestor
{
    public void RequiremenrsAreNotMet()
    {
        //code which handle situation when requiremenets are not met
    }
}

<强> 2。使用返回类型作为状态指示

这样,当不满足要求时,您应该创建ReportGenerationStatus对象,并将HasResult标志设置为false。 在其他情况下,只需将HasResult设置为true,并相应地设置结果。这有点模仿从函数式语言中已知的Option类型

internal static ReportGenerationStatus GetReportsForSearch(string searchVal, string searchParam)
{
    //code for your method
}

public class ReportGenerationStatus
{
    public List<Contracts.DataContracts.Report> Result { get; set; }
    public bool HasResult { get; set; }
}