.net 什么';这个密码怎么了?Can';t按十进制和日期搜索

.net 什么';这个密码怎么了?Can';t按十进制和日期搜索,.net,model-view-controller,nhibernate,.net,Model View Controller,Nhibernate,我正在使用jQuery表,它使用ASP.NETMVC4.5连接到我网页中数据库中的一个表 我已经编写了我的控制器,我正在尝试使用搜索框搜索数据,到目前为止,我可以搜索诸如姓名、ID、电话之类的内容,因为它们在我的类中都定义为字符串,但当涉及到按日期或工资(小数)搜索时,它将不起作用。有什么想法吗?我对C#完全陌生-以下是我的一些控制器: public ActionResult BankPaymentListing(string id)// { //using (var session =

我正在使用jQuery表,它使用ASP.NETMVC4.5连接到我网页中数据库中的一个表

我已经编写了我的控制器,我正在尝试使用搜索框搜索数据,到目前为止,我可以搜索诸如姓名、ID、电话之类的内容,因为它们在我的类中都定义为字符串,但当涉及到按日期或工资(小数)搜索时,它将不起作用。有什么想法吗?我对C#完全陌生-以下是我的一些控制器:

public ActionResult BankPaymentListing(string id)//
{
    //using (var session = NHibernateHelper.OpenSession())
    //{
    //    if (session.IsNotNull())
    //    {
    //        using (var transaction = session.BeginTransaction())
    //        {
    //            try
    //            {
    //                var fieldName = new[] {"RCNO"}.ToList();

    //                ViewBag.message = DataRetrieveHelper.GetNextRunningNumReset(session, "CLPAYM", fieldName, DateTime.Now, true, new TimeSpan(0, 0, 0 ,0 ,1));
    //                transaction.Commit();
    //            }
    //            catch (Exception ex)
    //            {
    //                ex.WriteExToLog();
    //                transaction.Rollback();
    //            }
    //        }

    //    }
    //}

    ViewBag.ID = id;
    return View();     
}

[HttpPost]
public ActionResult BankPaymentListingAction(FormCollection fm, McJqDataTableParameter param)
{
    var rtObj = new McJqDatatableServerReturnObject
    {
        sEcho = param.sEcho,
        iTotalRecords = 97,
        iTotalDisplayRecords = 3,
        aaData = new List<string[]>()
    };
    try
    {
        if (fm != null)
        {
            var allFiledList = new List<string>();
            if (fm["sColumns"].IsNotNull())
            {
                var filterFields = fm["sColumns"].Split(',');
                allFiledList.AddRange(filterFields.Where(t => t.IsNotNullNotTrimEmpty()));
            }
            var ascArray = new ArrayList();
            var descArray = new ArrayList();
            for (var c = 0; c < param.iColumns; c++)
            {
                if (fm["sSortDir_" + c] == null) continue;
                if (fm["sSortDir_" + c].ToUpper().CompareEq("ASC"))
                {
                    ascArray.Add(allFiledList[Convert.ToInt32(fm["iSortCol_0"])]);
                }
                else if (fm["sSortDir_" + c].ToUpper().CompareEq("DESC"))
                {
                    descArray.Add(allFiledList[Convert.ToInt32(fm["iSortCol_0"])]);
                }
            }
            var ascSort = string.Join(",", ascArray.ToArray());
            var descSort = string.Join(",", descArray.ToArray());
            ascArray.Clear();
            descArray.Clear();
            if (ascSort.IsNullOrTrimEmpty() && descSort.IsNullOrTrimEmpty())
            {
                ascSort = allFiledList[0];
            }

            using (var session = NHibernateHelper.OpenSession())
            {
                if (session.IsNotNull())      
                {         
                    var criteria = session.CreateCriteria(typeof(Pybkdtl))
                        .Add(Restrictions.Eq("PybkhdrId", new Guid(fm["ID"])));

                    if (!string.IsNullOrEmpty(fm["SearchValue"]) && !string.IsNullOrEmpty(fm["SearchType"]))
                    {
                        criteria.Add(Restrictions.Like(fm["SearchType"], "%" + fm["SearchValue"] + "%")); 
                    }

                    if (!string.IsNullOrEmpty(fm["SearchValue"]) && !string.IsNullOrEmpty(fm["SearchType"]))
                    {
                        criteria.Add(Restrictions.Like(fm["SearchType"], "%" + fm["Icno"] + "%"));
                    }


                    if (!string.IsNullOrEmpty(fm["SearchValue"]) && !string.IsNullOrEmpty(fm["SearchType"]))
                    {
                        criteria.Add(Restrictions.Like(fm["SearchType"], "%" + fm["MobileNo"] + "%"));
                    }

                    if (!string.IsNullOrEmpty(fm["SearchValue"]) && !string.IsNullOrEmpty(fm["SearchType"]))
                    {
                        criteria.Add(Restrictions.Like(fm["SearchType"], "%" + fm["ReferenceNo"] + "%"));

                        //decimal SearchValue = decimal.Parse(fm["SearchValue"]); 
                    }

                    decimal Amount;
                    if (decimal.TryParse(fm["searchValue"], out Amount))
                    {
                        criteria.Add(Restrictions.Eq(fm["searchValue"], "Amount"));
                    }

                    DateTime date;
                    if (DateTime.TryParseExact(fm["SearchValue"], "dd/MM/YYYY", new CultureInfo("en-US"), DateTimeStyles.None, out date))
                    {
                        criteria.Add(Expression.Ge(fm["TransactionDate"]
                        criteria.Add(Expression.Le(fm["TransactionDate"],
                    }
公共操作结果BankPaymentListing(字符串id)//
{
//使用(var session=NHibernateHelper.OpenSession())
//{
//if(session.IsNotNull())
//    {
//使用(var transaction=session.BeginTransaction())
//        {
//试一试
//            {
//var fieldName=new[]{“RCNO”}.ToList();
//ViewBag.message=DataRetrieveHelper.GetNextRunningNumReset(会话,“CLPAYM”,字段名,DateTime.Now,true,新时间跨度(0,0,0,0,1));
//Commit();
//            }
//捕获(例外情况除外)
//            {
//例如WriteExToLog();
//transaction.Rollback();
//            }
//        }
//    }
//}
ViewBag.ID=ID;
返回视图();
}
[HttpPost]
公共操作结果BankPaymentListingAction(FormCollection fm,McJqDataTableParameter参数)
{
var rtObj=新的McJqDatatableServerReturnObject
{
sEcho=param.sEcho,
iTotalRecords=97,
iTotalDisplayRecords=3,
aaData=新列表()
};
尝试
{
如果(fm!=null)
{
var allFiledList=新列表();
if(fm[“sColumns”].IsNotNull())
{
var filterFields=fm[“sColumns”]。拆分(',');
AddRange(filterFields.Where(t=>t.IsNotNullNotTrimEmpty());
}
var ascArray=newarraylist();
var descArray=new ArrayList();
对于(var c=0;c
参数不正确:
限制。Eq(fm[“searchValue”],“Amount”)
应该是
限制。Eq(“Amount”,Amount))

除此之外,代码看起来很混乱:

  • 只发布了一半的代码。在中间结束
  • 不符合.NET命名约定
  • 没有错误处理的过多空检查

你应该只发布代码的相关部分,否则你会让人们很难提供帮助还保证任何错误都不会被注意到。你试过调试代码吗?你确定你的代码在尝试进行查询之前没有失败吗?例如,如果你传递一些随机字符串,
TryParse
将返回false,但你的代码永远不会警告你。我删除了一些不必要的代码,是的,它工作了,但如果我想按小数点或日期搜索…我想添加条件可能有问题,但我不知道是哪一个。我想你添加了代码,这让事情变得更糟。有太多的地方可能出错