Hi,I've encountered this issue with the ArcGIS Silverlight API 3.0.I was wondering if it is a known issue, or by design to be consistent with the Javascript and Flex arcgis SDKs?I want to know whether to implement the required string escaping in my application, or expect it to be fixed soon? I don't want the case where double escaping occurs in the future.And it should be documented.----------If for example I set a layer definition query to something like thisOperator = '\\testescaping this'or in codeprivate const string testDefintionQuery = "Operator = '\\\\testescaping this'";
--------The map control / export map operation will escape the single quotes, and backslashes. Looking at the request in fiddler WebForms view, we seelayerDefs={"1":"Operator = \u0027\\\\testescaping this\u0027"}-------If i perform an identify, using the same layer definition, it is not escaped. Looking at the request in fiddler WebForms view, we seelayerDefs={"1":"Operator = '\\testescaping this'"}-------I also think the Query operation also does not escape the Where property.-------Example code - map export layer definition void MainPage_Loaded(object sender, RoutedEventArgs e)
{
var arcgisDynamicLayer = new ArcGISDynamicMapServiceLayer();
arcgisDynamicLayer.Url = _TestMapServiceUrl;
this.Map.Layers.Add(arcgisDynamicLayer);
_mapLayerId = this.Map.Layers.IndexOf(arcgisDynamicLayer);
var layerDefinition = new LayerDefinition();
layerDefinition.LayerID = _mapLayerId;
layerDefinition.Definition = testDefintionQuery;
arcgisDynamicLayer.LayerDefinitions.Add(layerDefinition);
}
Example code - identify with layer definition private void PerformIdentify(Map.MouseEventArgs mouseEventArgs)
{
var identifyParameters = new IdentifyParameters();
identifyParameters.DPI = 96;
identifyParameters.Geometry = mouseEventArgs.MapPoint;
identifyParameters.Height = (int)Map.Height;
identifyParameters.Width = (int)Map.Width;
identifyParameters.LayerIds.Add(_TestMapServiceLayerId);
var layerDefinition = new LayerDefinition();
layerDefinition.LayerID = _mapLayerId;
layerDefinition.Definition = testDefintionQuery;
var layerDefinitions = new List<LayerDefinition>();
layerDefinitions.Add(layerDefinition);
identifyParameters.LayerDefinitions = layerDefinitions;
identifyParameters.MapExtent = Map.Extent;
identifyParameters.ReturnGeometry = true;
identifyParameters.SpatialReference = new SpatialReference(102100);
var identifyTask = new IdentifyTask();
identifyTask.DisableClientCaching = true;
identifyTask.Url = _TestMapServiceUrl;
identifyTask.ExecuteCompleted += (sender, args) =>
{
};
identifyTask.Failed += (sender, args) =>
{
};
// execute
identifyTask.ExecuteAsync(identifyParameters);
}