ASP.NET - estructuras de datos y WCF habilitado para AJAX llamado desde JavaScript

   
Vista:
Imágen de perfil de Ella Ilona

estructuras de datos y WCF habilitado para AJAX llamado desde JavaScript

Publicado por Ella Ilona (3 intervenciones) el 16/12/2012 16:26:08
A continuación se encuentra mi código fuente de un servicio y una página web para aquellos que estén interesados en emplear servicios WCF propios llamados desde script de cliente.

Estaba utilizando VWD 2010 y ASP.NET 4.0; el servicio está configurado con opciones
predeterminadas, como webHttpBinding e enableWebScript (JSON).

El propósito del código es demostrar las correspondencias entre las estructuras "DataContract" y los objetos en JavaScript, con tal que se utilice el control de servidor ScriptManager.

//-----------------------------------------------------------------------//
MiServicio.svc
//-----------------------------------------------------------------------//

<%@ ServiceHost Language="C#" Debug="true" Service="MiServicio" %>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using System.Text;

[DataContract]
public class testinput
{
[DataMember]
public string myina;
[DataMember]
public string myinb;
[DataMember]
public string myinc;
}

[DataContract]
public class testoutput
{
[DataMember]
public string myouta;
[DataMember]
public string myoutb;
[DataMember]
public string myoutc;
}

[DataContract]
public class testarray
{
[DataMember]
public List<testoutput> myelem;
}


[ServiceContract(Namespace = "Muestra")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class MiServicio
{
[OperationContract]
public testarray TestMArr(testinput mymess)
{
testarray oarr = new testarray();

oarr.myelem = new List<testoutput>();

testoutput stri = new testoutput();
stri.myouta = mymess.myina;
stri.myoutb = mymess.myinb;
stri.myoutc = mymess.myinc;
oarr.myelem.Add(stri);

testoutput strx = new testoutput();
strx.myouta = "aaa";
strx.myoutb = "bbb";
strx.myoutc = "ccc";
oarr.myelem.Add(strx);

testoutput stry = new testoutput();
stry.myouta = "ddd";
stry.myoutb = "eee";
stry.myoutc = "fff";
oarr.myelem.Add(stry);

return oarr;
}

}


//-----------------------------------------------------------------------//
MiPagina.aspx
//-----------------------------------------------------------------------//

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script language="javascript" type="text/javascript">
// <![CDATA[

function Button1_onclick() {
var obj = new Muestra.MiServicio();
var myin = { myina: "111", myinb: "222", myinc: "333" };
obj.TestMArr(myin, MyAOk, MyAErr, null);
}

function MyAOk(result) {
var txt, nlen = result.myelem.length;

for (var i = 0; i < nlen; i++) {
txt = result.myelem[i].myouta + " * ";
txt = txt + result.myelem[i].myoutb + " * ";
txt = txt + result.myelem[i].myoutc;
alert(txt);
}

}

function MyAErr(result) {
alert(result.get_message());
}


// ]]>
</script>
</head>
<body>
<form id="form1" runat="server">
<div>

<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="MiServicio.svc" />
</Services>
</asp:ScriptManager>
<br />
<br />

<input id="Button1" type="button" value="test" onclick="return Button1_onclick()" /></div>
</form>
</body>
</html>

//-----------------------------------------------------------------------//
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder