views:

63

answers:

1

Hello,

I have a web service from which I need to return a string containing html. This html is the markup for a Select control (for use in jqGrid search filters), e.g.

<select><option id='1'> value 1 </option></select>  

My WCF web service contains a method that returns this value as a string...

public string GetLeadTypeSelect()
{
    return "<select><option id='1'> value 1 </option></select>";
}  

and the contract for this method is :

[OperationContract]
[WebInvoke(Method = "GET",
    BodyStyle = WebMessageBodyStyle.Bare,
    ResponseFormat = WebMessageFormat.Json)]
string GetLeadTypeSelect();  

My problem is that escape characters are inserted into the string so rendering the returned HTML useless - the service returns this :

"<select><option id='1'> value 1 <\/option><\/select>"  

The quotation marks and the escaped '/' in the closing <option> and <select> tags both cause problems.

jqGrid uses the returned HTML to display the dropdown...

filterModel: [
    { label: 'Type', name: 'type', stype: 'select', surl: '../../../Services/Leads/GetLeads.svc/GetLeadTypeSelect' },

So, my question is, how to I return pure HTML back to the client from this web service so that it can be inserted into my HTML page?

Thanks in advance for any help, Colin.

A: 

I assume you use it through Javascript.

If you do an unescape(response), your problem should be solved.

On the other hand, if you don't use it in Javascript but just in a ASP.NET / PHP / whatever website you are probably better off by just returning an array of values and display values, so that you can reuse the webservice in other code.

Your piece of code now only works in an HTML environment. What if you need to write a .NET / C++ / whatever app tomorrow that utilizes your webservice? Then you'll need to change it. And that is not the point of webservices. Webservices promote reusability of code. And you are fighting against that. (and the code will win!)

Snake
Thanks Snake for the reply. Unfortunately my hands are a little tied. I'm using jqGrid, and the only way to create a ddl for search parameters is to call a web service that returns the html. I've edited the question to reflect that. I've no ability to manipulate the returned string otherwise yes I could unescape in javascript.
Col