我正在尝试查询WebMatrix中的数据库,这是我已经多次完成的事情,只是这一次,我发现供应商列中的某些字段包含&符号。我查看了几篇文章,但没有人从WebMatrix的角度来看这个解决方案(实际上,根本没有真正解决直接问题,而是为特定环境解决问题)。
我还尝试过几个方面,包括C#的替换方法(尽管如此,我从来没有能够得到一个明确的例子,我应该用什么替换&符号,如果有什么作为合适的替代品,那就是),并且逃避&符号用反斜杠(显然这不起作用)。
理想的是sql环境本身的转义字符,但是,afaik,不存在这样的转义字符。如何替换以下查询以返回其字段包含&符号的行,如下所示:
SELECT vendor_id FROM vendors WHERE vendor_name = 'J & H Equipment'
上述查询不返回任何行,即使vendor_name列包含的值(字符串)恰好是'J& H设备'
它提到我正在参数化我的查询,因此实际查询看起来像:
string selectQueryString = "SELECT ap_vendor_id FROM ap_vendors WHERE ap_vendor_name = @0";
var code = db.QueryValue(selectQueryString, searchString);
在这段代码之后,我只是将值写入页面(使用razor,是的,我已经尝试过Html.Raw(代码)和@code),因为这是一个AJAX调用。
另外,下面是我在实际查询之前尝试运行的替换函数:
searchString = searchString.Replace("&", "\\&");
请注意,双反斜杠是必需的,因为'\'字符是C#中的转义字符,因此两个'\'等同于C#中的一个'\'。
--------------------------我的解决方案------------------- --------
对我来说,解决方案是在AJAX调用之前在我的javascript中使用encodeURIComponent(我确定现在很清楚,我还没有长时间使用AJAX)。
答案 0 :(得分:3)
解决方案是在AJAX调用之前在javascript中使用encodeURIComponent。