
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>
//-----------------------------------------------------------------------//
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


0