ahmed_sa Ответов: 1

При выполнении поисковой строки web api к ней добавляются двойные кавычки, почему и как решить проблему ?


Я работаю над веб api asp.net ядро 2.2 я сталкиваюсь с этой ошибкой

An expression of non-boolean type specified in a context where a condition is expected, near 'and'.

процедура успешно работает на sql server, как показано ниже
exec [dbo].[sp_ReportDetailsGetALL] "2028","2020-05-03","2020-05-11",  'Text6=''locations'''


точно вопрос по следующей строке

'Text6=''locations'''


на веб API я думаю что он добавляет двойные кавычки на начало и конец так что он не работает

json я передал в web API следующим образом :
{
  "startdate": "2020-05-03T22:00:00Z",
  "enddate": "2020-05-11T22:00:00Z",
  "searchstring": "'Text6=''MFG'''",
  "reportID": "2028"
}


процедура выглядит следующим образом :
declare @ColumnName Nvarchar(max) = (SELECT 'select  ' + STUFF((SELECT ',' + 'Text'+CONVERT(varchar(20),ReportHeaderIndex) + ' '+ '['+ReportHeader +']'
            FROM ReportHeaders where ReportID=@ReportID order  by  ReportHeaderIndex 
            FOR XML PATH('')) ,1,1,'') +  ' , convert(nvarchar(20),[ReportDate]) ReportDate  From  ReportDetails R where  ReportDate >= ''' +@ReportDateFrom+'''  and  ReportDate <= '''+ @ReportDateTo  +'''  and  R.ReportID =' +  @ReportID  + '  and  '+@SearchString+'  and IsHistory=0  order by  reportdate desc ' + @SortingColumns AS Txt   )
exec   (@ColumnName)


Что я уже пробовал:

public DataTable GetReportDetailsSearch(string ReportID, string FromDate, string ToDate, string SearchString)
      {

          List<SqlParameter> param = new List<SqlParameter>()
          {

              new SqlParameter("@SearchString",SearchString),
              //val3 SearchString.Replace("\"","")

          };

  DataTable ReportDetailsSearch = SQLDAL.ReturnDataTableByProcedure("sp_ReportDetailsGetALL", param);
          return ReportDetailsSearch;
      }


[Route("ReportDetailsSearch")]
       [HttpPost]
       public IActionResult GetSearchedData([FromBody] dynamic DataObjectSearch)
       {



               string Searchdata = DataObjectSearch.searchstring;

               var PostSearch = _reportservice.GetReportDetailsSearch(ReportId, StartDate, EndDate, Searchdata);

               return Ok(PostSearch);

1 Ответов

Рейтинг:
8

ahmed_sa

Проблема решена
решать проблему путем передать JSON с переднего плана на строку поиска на формат
"'Text6='MFG'" это решило мою проблему