Addicted to
Bienvenida :D
Saludetes
Bienvenida!
En buena hora.
Exitos y Saludos desde Perú
Bienvenida!!! Espero que disfrutes de tu nueva etapa blogera en Geeks.ms.
Hola Gisela... un gusto tenerte por aquí. ;-)
Un abrazo.
Jorge
Una pena todo el curro en los estilos, lo tenías niquelado!! :_)
welcome!
Bienvenida Gisela
Saludos
Muchas gracias a todos :)
Igualmente, me gustó la cabecera que me improvisé para este... jejeje es todo lo que hice :p
¡Saludos!
Hola preguntoncojonero :p ,
No, no estoy usando Snag-it :)
Simplemente estoy haciendo un Alt + Impr Pant y bueno, en Windows 7 tienes algo parecido a Snag-it en cuanto a que puedes tener el mismo selector para seleccionar la parte que quieras de la pantalla y te genera una imagen :)
Espero que sea así :)
Intentaré actualizarlo lo antes posible con los post que ya tengo.
Hola Gisela, al principio quede loco por que SQL Server 2008 no me permitía modificar la estructura de las tablas y efectivamente es por que trae esta restricción y simplemente lo que hay que hacer es lo que tu planteas.
Gracias Gisela, yo estuve dándole vueltas al tema durante muchísimo tiempo y al final me comentaron dicha opción. Lo que sí me advirtieron que estaba deshabilitada para evitar problemas de integridad en las tablas (relaciones, claves, etc.)
Saludos y gracias nuevamente.
Francisco J.
Felicidades por la incorporación a esta panda de frik...friends :)
Esperamos impacientes esa lluvia de post ;)
Salu2
Bienvenida Gisela,
Me gustado mucho tu post de bienvenida de tu otro blog: returngis.blogspot.com/.../public-intro-new-intro.html
Y se esperan tus posts...
Saludos,
Gracias por vuestros comentarios :)
Quizás es interesante dejar habilitado el check una vez tenemos la versión "final" (Nada es final en informática :p) de nuestra base de datos, para evitar modificaciones por error.
Lo que si que es cierto es que, en un principio, resulta incómodo tenerlo habilitado cuando aún estamos en fase de diseño.
Gracias a todos por vuestros comentarios de bienvenida :)
Espero que esta parte que me corresponde de Internet, sea de utilidad :P
Hola en el ultimo código de ejemplo, para demostrar tu punto, tendría que ser:
static void ejemplo(string saludo,string nombre = Arturo)
Aun así, como tu indicas, el compilar preferiría el ultimo método:
static void ejemplo(string saludo)
Muchas gracias por publicarlo, no sabia esto.
Hola Arturo,
Tienes toda la razón, en el último ejemplo se me olvidó dar valor al parámeto opcional del segundo método. Fallo mío.
Ya está corregido :)
¡Muchas gracias por comentarlo!
@preguntoncojonero
No creo... :)
Tipos anónimos no deberían ser interesantes para reflection salvo para usarlos como "diccionarios dinámicos", lo que no va más allá de recojer todas sus propiedades y sus valores. De todos modos los tipos anónimos de .NET son de juguete, así que poca cosa se puede hacer con ellos ;-)
Los parámetros opcionales tampoco creo que afecten a reflection: ya existia antes la propiedad DefaultValue en ParameterInfo (para dar soporte a VB supongo), así que no creo que nada vaya a cambiar mucho.
@Gisela
Buen blog... bienvenida :D
Parabéns! Show este post! =)
Hola,
Un pequeño truco sería tirar de las vistas del sistema (ver si las tiene claro ;)) y cargar las tablas de nuestra BBDD en un treeview de una aplicación :D....
Saludos!
Try out this instead if you want to use SQL Azure in VS2010.
sqlazureexplorer.codeplex.com
/dag
DE, Microsoft Sweden
Gracias por vuestros comentarios,
@Fran si, sería una forma de poder ver los objetos. De todas formas, para ello, podemos usar SQL Azure Manager que básicamente lo que nos muestra es un treeview e incluso podemos eliminar y crear bases de datos y tablas. Quizás con esta aplicación nos podría bastar para tener una visión de lo que tenemos en la nube :)
@Dag Thanks for your advise :) I'll try it.
Un buen consejo, igual que primero instalar el IIS y después el framework. Pero para utilizar Visual Studio no es imprescindible utilizar o tener instalado el IIS, porque tiene su propio servidor web desde la versión del 2005.
Saludos ;-)
Hola Marc,
Si, tienes razón en cuanto a que Visual Studio tiene su propio Development Server y en principio nos debería bastar. El caso es que, cuando creas un servicio web con WCF, no tienes forma de que te interprete (O yo no la encontre... :( ) el archivo svc correctamente. En el post donde explico cómo crear un servicio web con WCF, realmente me estoy creando un proyecto de tipo librería. Si intento ejecutar el archivo svc sin montarlo en el IIS me aparecería algo como esto:
geeks.ms/.../svc.PNG
´
Por otro lado, como no tengo otro punto de entrada a mi aplicación (Formulario Windows o Página web) necesito montarlo en el IIS para arrancarlo.
De ahí todo el tema del IIS :)
Hola Gisela
Antes que anda bienvenida a Geeks.ms!
Ya había un post al respecto, pero "el conocimiento no ocupa lugar (solo algunos bytes en los servers de Geeks.ms)" jeje
- SQL Server 2008: Management Studio … “Impedir guardar cambios que requieran volver a crear tablas” geeks.ms/.../sql-server-2008-management-studio-impedir-guardar-cambios-que-requieran-volver-a-crear-tablas.aspx
Hola José,
Antes de nada, darte las gracias por la bienvenida :)
La verdad es que no tenía idea de que hubiera otro post relacionado con este tema ya que, actualmente, estoy moviendo todos los post que tenía escritos en Blogger a Geeks. Mil perdones si te he causado alguna molestia por ello.
Estoy intentando no perder todo aquello que en su momento me tuve que sentar a redactar :)
Gisela, no fue molestia. Al contrario.
Solo quería hacer autoreferencia, para que los dos artículos queden relacionados.
Saludos.
Voto a bríos! Pero esto que es!
Uno de los blogs más interesantes (y prácticos) de todo el sitio, y no te pone nadie ni un comentario.
Si está claro, que "la miel no se hizo para..." ;) ;)
Muchas gracias por el comentario PabloNetrix :)
Me alegra que pienses así :D
importante señalar que a partir de .NET 3.5 tenemos los delegados Func<> y Action<>, que nos permite evitar la mayoria de las declaraciones de delegados, en este ejemplo tuyo
delegate void Delegado(string cadena);
se puede reemplazar simplemente por:
Action<string> (delegado que toma un string y no regresa resultado (void)) directamente donde lo necesites, por ejemplo:
Action<string> delegando = Saludo;
delegando += Despedida;
delegando(txtCadena.Text);
nota que ya no se requiere tener una declaracion exterior separada del delegado
salu2
también puedes usar expresiones lambda para crear delegados:
static void Main(string[] args)
{
Action<string> delegando = (x => Console.Out.WriteLine("Hola " + x));
delegando += (x => Console.Out.WriteLine("Adios " + x));
delegando("Manolo");
}
En realidad estoy interesada en este asunto por la forma de trabajar con LINQ y bueno... Parece que este tema de delegados, expresiones lambda, etc. genera cierto miedo :D
Intentaré escribir más sobre los puntos que comentáis para intentar tener dos o tres pasos (post) de comprensión sobre este tema ;)
Por si no conoces este framework te recomiendo que lo veas...
http://fluentnhibernate.org/
Hola Carlos,
No, aún no tuve tiempo de echarle un vistazo, aunque ya había oido sobre él. Muchas gracias por el link :)
Tengo taaaaaaaantas cosas que ver :D
Gracias por tu comentario, ¡Saludos!
Hola Gisela. Muchas gracias por tan buen post.
Estaré a la espera de tus otros post de nHibernate.
Una consulta. ¿Conoces el Entity Framework? ¿Cuales son las ventajas y desventajas del nHibernate en comparación al Entity Framework?
Muchas gracias por tu comentario :)
En realidad, por motivos de trabajo, he utilizado más NHibernate que Entity Framework, aunque si he podido hacer alguna demo con ello.
A simple vista te puedo decir que Entity Framework está más integrado en Visual Studio que NHibernate y, este último necesita realizar algunas configuraciones de una forma más manual.
En cuanto a rendimiento no sabría decirte si es un dato considerable.
Si te parece, puedo hacer un post con la configuración para EF en este mismo contexto.
Hola Gisela.
Claro que si me parece! :)
Muchas gracias
El manejo de la sesión tiene para mi un "smell".
Veo "Bind" pero no veo "unbind", dado que la sessionFactory es privada, nadie incluso desde afuera de esa clase puede hacer unbind. Por otro lado no entiendo el hecho de que al pedirle a esa clase la sesión actual se haga un bind SIEMPRE.
Si lo que estas haciendo es session-per-request, es decir "session y transaction tienen el mismo ciclo de vida que el request web", el bind debería ser realizado en el beginrequest (podes hacerlo directamente en Global.Asax), y el unbind en EndRequest. Luego inyectar ISessionFactory en los repositorios/daos que es lo que hacemos la mayoría, y a él solicitarle GetCurrentSession.
Si no estas haciendo "session-per-request" (MUY RECOMENDADO), no te hace falta hacer nada con el context (ni si quiera configuralo en el config).
Buenos días José :)
Mi idea era dejar preparada más o menos la clase Connection.cs para usar session-per-request utilizando Global.asax y, obvio, HttpModule... Pero no me llega el tiempo para hacer un post tan largo :(
Por otro lado, también quería hacer session-per-request con Action Filter, como comencé en el anterior Blog pero utilizando un mismo atributo para la sesión y la transacción.
Entiendo que, una vez implementada la clase que hereda IHttpModule, debo bindear al inicio y hacer el unbind al final, eliminando el Bind que se encuentra dentro del método GetCurrentSession();
Cuando tenga configurada la aplicación para hacer session-per-request el atributo session factory debería ubicarse en el Global.asax para tener acceso desde toda la app. ¿Puede ser?
Quizás lo dejé un toke a medias y podía haberlo simplificado más... Intentaré revisarlo en cuanto pueda y elimino las cosas innecesarias, para que se entienda qué es lo necesario en este caso en concreto.
Gracias por tu comentario
Ufff creo que ya está ;D
Por el momento, como quiero seguir escribiendo post sobre NHibernate, MVC, etc, no me interesa hacerlo todo perfecto ni mucho menos sino introducir mejoras y que el lector sepa por qué se introducen.
Gracias a José Romaniello, del que siempre aprendo algo :D, intento mejorar todo lo que hago en cuanto a NH se refiere.
No soy ninguna experta en esta librería y hay muchas cosas con las que no he tenido que pelearme y por lo tanto aprender de ellas.
Quiero intentar hacer las cosas lo más simple posible para luego poder explicar las ventajas que supone modificar el código de una forma u otra :)
Hola Gisela!! Enhorabuena por tu nuevo "hogar". Espero que estés muy a gusto con gente tan interesante como el "Gran Rodri" (es compañero de curro) y muchos otros. Únicamente comentarte que la imagen de cabecera ocupa 227 kb, y simplemente abriendo la paint, y guardándola como jpg, se quedan en 33 kb. Ya sabes, en internete hay que aprovechar al máximo los bytes. Besos y suerte!!!
Buenas noches Juan Carlos,
Muchas gracias por tu comentario y gracias por el tema de la cabecera! La verdad es que eres el primero que me lo dice y como las conexiones de ahora vuelan :D
En seguida lo cambio ;)
Muchas gracias,
Solucionado ;)
¡Saludos y gracias de nuevo!
Y yo que pensaba que me iba a escapar de ASP.Net MVC ahora me toca estudiar .. y ya por donde voy a empezar :D
Yo te explico lo que pueda Bruno ;D
Mucha Gracias, con esta ayuda he resuelto el problemita, mil gracias
Wow... Gisela ¡Casate conmigo!... eres la mujer ideal :P
Muy buena info =)
Hola Gisela, buena la explicación de tu post, pero ne salieron algunas dudas:
1.-Como haces para testearlo? pq al testear tus controladores , tienes que verificar que tenga declarado el atributo en cada uno.
2.- Al tener declarado el atributo tienes que hacerle un testing al atributo(que cree una sesion) y testear el controlador en si.
3.- No te parecere que la aplicación pierde "mantenibilidad"
4.- Tambien me parece que esa manera la aplicacion se vuelve más acoplada
Saludos desde Lima, Perú
Buenos días a todos :)
En primer lugar, gracias por vuestros comentarios.
@José Fabricio Rojas te muestro un ejemplo de cómo podríamos testear si un controlador tiene declarado un atributo en concreto. En realidad es bastante simple:
[TestMethod] public void HomeUtilizaSessionPerReQuest() { var homeController = new HomeController(); var attributes = AttributeUsageAttribute.GetCustomAttributes(homeController.GetType()); CollectionAssert.Contains(attributes, new SessionPerRequest()); }
El segundo punto que me comentas, me parece bastante interesante a la par que cierto :) Efectivamente sería bastante recomendable testear el atributo en cuestión. Y realmente debería de ser así porque deberíamos asegurarnos de varias cosas, como si la sesión está abierta después de llamar a ese método, lo mismo con la transacción, qué pasa si se produce un error (si el commit se realiza o no). Es decir, creo que son puntos importantes que se podrían testear y descartar estas posibilidades a la hora de que nuestra aplicación falle.
Sobre el mantenimiento de la aplicación, la verdad no sé decirte... Uno de los puntos desde los cuales se puede enfocar Session Per Request desde un Action Filters es que el programador tiene mayor control para decidir qué controles/acciones tienen disponible la posibilidad de usar NH si lo necesitan. Es posible que tengamos controladores o acciones que no necesiten persistencia, que estén realizando sus consultas a un webservice, que nada tiene que ver con NH o abriendo un archivo, etc. Quizás tenemos controladores que, aunque el costo de abrir una session sea mínimo... no es necesario hacerlo (No me hace falta utilizar unas deportivas si no voy a salir a correr...) No sé si me explico.
Otra ventaja que veo es poder reutilizar estos filtros en otros proyectos/aplicaciones... Algo que también se podría hacer con HttpModule pero, en el caso de Global.asax es bastante posible que tengas otros métodos, inicializaciones en él que realmente no te permiten reutilizar en otro proyecto. (En MVC por defecto inicializamos las rutas necesarias para poder arrancar la aplicación en el Global.asax)
Espero haber resuelto tus dudas :)
Muchas gracias por vuestros comentarios :)
¡A modificar tablas! ;D
Si queres testeare solo el attribute
typeof(XyzControler).Should().Have.Attribute<SessionPerRequestAttribute>();
Muchas gracias, muy buen par de post. Muy simples y claros.
Muchas gracias Arturo :D
Espero seguir avanzando con JQuery para mostrar lo fácil que es trabajar con esta gran librería :)
Muy bueno !!!
Algún artículo para Linq to SQL ??
salu2grz
Muchas gracias por tu comentario preguntoncojonero :)
Todo se andará ;D
Gisela....
.... cuando me meta a fondo con jQuery va a ser de tu mano, ;-)
Muchas gracias jorge por tu comentario :),
MUCHAS GRACIAS!!!
ya estaba que rompia el monitor del stress XD ajajajjaja
@Diego, sé a lo que te refieres :p
Gracias por tu comentario :D
Muchas gracias. Estoy metiéndome con ASP.NET MVC y tus explicaciones en español, me son muy claras.
Esto del JQuery me ha venido muy bien, pero echo en falta ver cómo funcionan los ejemplos :-)
¡Hola Montse! :)
He adjuntado al post un rar con los ejemplos que muestro en él. Si necesitas algo más avísame ¿Ok?
Gracias por tu comentario,
Gracias a ti Arturo por pasarte :)
Muy buenas, Gis!
Aunque no me entere demasiado de que va esto (soy un analfabeto en muchos temas, y éste es uno de esos...jeje) te deseo toda la suerte en este proyecto porque, la verdad, te lo estas currando muchísimo y porque le dedicas un tiempo considerable para ayudar a los demas.
Si eso, cuando tengas un rato me traspasas todos estos conocimientos, una tarde vale?
Un beso!
Lo grabarán ???
Gracias !!!
@pregunton, pues no lo creo. Pero tendrás las ppts y algunas fotos en algun post posterior (interesante combinacion de palabras "post posterior")
@pregunton exactamente como dice El Bruno (Che gracias por la respuesta =) )
de nada che !! :D
tengo un problema justo en Add firewall rule, en el nombre Your IP Adress me aparece un IP y es el siguiente: 190.40.35.150 no se porque me aprece este IP, pero de tadas maneras yo coloco la IP de mi PC en IP Range y cuando quiero conectarme desde el visual studio a sql azure me sale un error de IP y es el siguiente:
Cannot open server 'gdpw6i2ain' requested by the login. client with IP address '190.235.14.216' is not allowed to access the server.
login failed user 'miconsa'
Hola Your IP Adress (Miconsa) :)
¿Estás usando algún proxy? ¿Has probado a añadir la IP que te indican en la página de SQL Azure al Firewall? Es posible que tu proveedor de Internet esté utilizando un proxy entre tu IP pública y las peticiones y es por ello que la que te ofrece SQL Azure es distinta a la tuya.
Si accedes a www.cualesmiip.es ¿Qué IP te aparece?
También debes tener en cuenta que lo más propable es que tu IP sea dinámica y la misma varía pasado un tiempo, por desconexión, etc. y la configuración del Firewall en estos casos queda "obsoleta" al no tener una IP fija.
Se reconoce el talento
Muchas gracias por tu comentario Adrián, me alegra que te sea de utilidad =)
El IP de mi PC es 192.168.1.55 he ingresado al link www.cualesmiip.es y me aparece el siguiente IP: 190.235.26.120
Miconsa,
La IP que tu me indicas es efectivamente la IP que tiene tu equipo dentro de tu RED LOCAL. La dirección IP que necesita SQL Azure es la IP pública que te facilita tanto esa página como la de SQL Azure.
Prueba a añadir la segunda que me escribes como regla en el Firewall. Tomará unos minutos para que tenga efecto el cambio.
Muy bueno tu blog. Queria preguntarte si has probado el MVP y cuales fueron tus experiencias. Gracias
Hola Vanesa, muchas gracias por tu comentario :)
En realidad si he trabajado con MVP y puedo decir que le veo numerosas ventajas a MVC en comparación. Por nombrarte algunas, en MVP aún se trabajaba con WebForms, tenías que lidiar con ViewStates, no tenías la facilidad que proporciona el Routing para generar URL amigables (y por lo tanto mejorar la localización de la página). Creo que MVC es el siguiente paso que le podía faltar a MVP :)
Después de trabajar con ambos patrones, creo que MVC genera un código mucho más limpio y claro y, por supuesto, mucho más testeable.
Espero que pueda servirte,
Hola pues esta bueno el articulo, pero quiero decirte que los ejemplos siempre son los mismo!, entonces la pregunta es, porque no hacen un ejemplo con entidades relacionada?, tratar de persistir una entidad con diferentes ObjectContext, no he encontrado un ejemplo completo de insercion, actualizacion y eliminación de entidades. POrque te comentos esto, porque solo tengo problemas con la actualización por mas que busco en internet y aplico las sugerencia para actualizar una entidad relacionada me salen multiples errores.
De todas formas es un bueno articulo para los que quieren enterarse de que es esta nueva tecnología.
Podrias poner el html basico, para poder probar estos ejemplos.
Hola javier,
En este post, tienes un proyecto adjunto con todos los ejemplos. Si necesitas alguna cosa más, no dudes en ponerte en contacto conmigo.
Hola Edward,
En primer lugar, muchas gracias por tu comentario y por la propuesta. Entiendo que arrancar con Entity Framework puede ser de los más sencillo pero la cosa puede llegar a complicarse llegados a un punto, más allá de listar una tabla.
Intentaré ampliar esta parte con más ejemplos con relaciones, actualización, etc. en cuanto tenga un momento =)
Gracias Fabio por tu aportación =)
esperaremos tu ejemplo, por lo pronto ya me di de alta y realice todos los pasos de tu ejemplo.
saludos
Hola Paco,
Muchas gracias por tu comentario, ya está disponible la siguiente entrega ;)
Buenisimo el ejemplo ... a ver cuando me pongo a jugar un poco con AppFabric :D
Muchas por tu comentario Bruno :)
Hola Gisela nuevamente saludos, gracias por agregar el codigo de ejemploi, porque lo intente hacer por mi cuenta y no me dio =(
espero que sigas ayudando a todos con tu conocimiento, felicidades!!
Gracias por tu comentario preguntoncojonero =)
En primer lugar, muchas gracias por tu comentario y mis disculpas por tardar en contestar.
¿Recuerdas qué problemas encontraste por el camino? Quizás sería interesante verlo =)
Muchas Gracias, tus post me están viniendo perfectos para meterme en el mundillo de MVC y jquery!
Muchas gracias por tu comentario JTorrecilla.
Si tienes alguna petición, sugerencia al respecto, por favor no dudes en ponerte en contacto conmigo ;)
muy bueno el post, bastante claro esta.
gracias gisela.
Gis,
Cual es tu opinión acerca de la libreria Ajax de MS? Hay gente que comenta que es muy pesada y que de hecho no hace nada que no se pueda hacer con jQuery, y recomiendan usar solo jQuery.
Contando que jQuery ya viene incluída con el project template por defecto de MVC, hay alguna razón para utilizar / no utilizar la librería de ajax de MS?
Entiendo que se pierde toda la funcionalidad por defecto incluída en el AjaxHelper, pero no debería ser especialmente complejo recrearla...
Que opinas sobre esto??? ;-)
@JTorrecilla
Sí, sí... eso ya lo decía en mi comentario :)
Mi pregunta va más en "porque usar la librería de ajax de MS existiendo jQuery y que esta viene incorporada en las plantillas por defecto"?
Gracias por tu respuesta!!!! ;-)
Un abrazo!
Gracias por vuestros comentarios =)
@Eduard, por lo poco que he visto hasta ahora de MS Ajax, no me invita a reemplazar JQuery por esta la verdad...
Quizás los chicos de Microsoft en este aspecto han dado también más juego a JQuery asumiendo la librería como un estándar de las plantillas MVC, integración con VS 2010,etc.
Me gustaría poder echarle un vistazo más detenidamente pero ya te digo, por lo pronto no se me ocurre una buena razón que las diferencie a favor de MS Ajax.
Excelente! ahora lo que podes hacer es utilizar data annotations ahí o NHV ;)
Si lo haces así genericamente, podes resolverlo en una clase base y te olvidas.
Otra cosa que a mi me gusta de IDataErrorInfo es que funciona de esta manera "automática" con cualquier tecnología de binding en lo que es Presentación (wpf, winforms, asp.net, asp.net mvc, y silverlight).
Gracias por tu comentario =)
Aunque en la versión oficial aún no soporta Data Annotations, ya sabemos que en la versión 2.0 viene ya listo y preparado ;)
Fabuloso !!! salu2&grz
Muchas gracias por tu comentario preguntoncojonero =)
Muchas gracias, ya solicité mi invitación aunque algo tarde, pero espero que me llegue.
Un saludo,
Jhon
Hola Jhon, gracias por tu comentario =)
Depende de la época están tardando más o menos en enviar los tokens, pero en principio deberían seguir llegando =)
Como siempre muchas Gracias, este fin de semana lo probaremos!!
Un saludo
Muchas gracias por tu comentario Javier Torrecilla =)
¡Que pases buen fin de semana!
Muy buen aporte Gisela, gracias.
Muchas gracias por tu comentario Joaquín =)
nice post !!! y linod ejemplo, especialmente los fuentes de los forms :P jeje
Gracias por tu comentario Bruno =)
No encontré información nada clara sobre el tema y Twitter me inspiró en el resto jejejeje.
¡Que te mejores Che!
Hola Jose Manuel
¿JMHB? No entiendo...
Muy buen post. Me encanta tu blog.
Un saludo.
Muchas gracias por tu comentario Juan =)
Gracias por el comentario si funciona.
Bravísimo !!! siga así señora con posts molones durante el 2010 !!!
Muchas gracias por tu comentario preguntoncojonero, se intentará =)
Gracias por tu comentario Lorenzo, espero que te haya sido de utilidad =)
Me ha arrancado una carcajada el ver a HardBit en la imagen de tu aplicación... maldito twitter, hace el mundo mas pequeño... Aaa, como siempre, excelente información... Gracias
¡Gracias por tu comentario Jusay!
Jajajaja para que se vea que son articulos frescos =D
Espero que a HardBit no le importe =/
¡Saludos y feliz año!
Solo que los AsynControllers existen desde la RTM de la versión 1.0, claro, poco fueron usados.
Aquí está la información en un docx de MS
aspnet.codeplex.com/.../ProjectReleases.aspx
Hola cprieto,
En primer lugar, gracias por tu comentario. Lo poco que he me ha dado tiempo a leer del doc es que en esa versión estaba la clase de un modo experimental, aunque revisaré el mismo de todos modos =)
Al menos, en la versión Beta de ASP.NET MVC 2 se ofreció como feature y no como mejora...
aspnet.codeplex.com/wikipage
Igualmente lo revisaré, me dejaste con la duda.
Gracias de nuevo ;)
Yep,
De hecho, el AsynController (como muchas otras mejoras de la ASP.NET MVC 2) estaba incluído en ASP.NET MVC Futures.
fabuloso !!! AcmBrowser es open source ?? salu2&grz , feliz añooooo
Hola preguntoncojonero,
AcmBrowser puedes encontrarlo dentro de Windows Azure Platform Training Kit. De hecho, te facilitan la solución completa y, como indico en el post, necesitas compilarlo para obtener el ejecutable y empezar a funcionar ;)
y que paso con el full RSS? :(
Hola Eber Irigoyen,
Ya, lo sé =(
Me puse en contacto con Rodrigo Corral, administrador de Geeks, para comentarle que estoy teniendo problemas con este asunto.
Espero que para la próxima publicación quede solucionado.
Perdonad las molestias.
Si, es cierto Cristian =)
Pero es por ello que tendremos que esperar a la versión final de 2.0 para disfrutar de ellas de una manera más eficaz... O empezar a trastear con la RC =)
¡Gracias por tu comentario!
Excelente tutorial, gracias por compartirlo. Saludos!
Muchas gracias por tu comentario Ivan =)
mola !!! salu2
Excelente post Gisela, me sirvió de mucha ayuda. Seguí así.
Hola Juan,
Muchas gracias por tu comentario. Si tienes cualquier duda o necesitas alguna otra cosa relacionada, no dudes en ponerte en contacto conmigo =)
Un buen tutorial paso a paso. Leyendo tus posts cada vez tengo más interés en empezar con Azure. Muchas gracias por el trabajo hecho, saludos!
¡Aún queda mucha nube por investigar! =D
Excelente, Gracias por compartirnos tu conocimientos, Felicidadess..
Felicidades por tu blog esta muy padre.. muchisima informacion.... :D
Muchas gracias Williams,
Se agradecen este tipo de comentarios =)
¡Espero seguir aportando más y mejor!
Gracias por tu comentario Williams =)
Muchas gracias, me es de mucha utilidad. Sigue con tus cookbooks de mvc y jquery, que son de mucha ayuda.
Muchas gracias por tu comentario Arturo :)
Me alegro que te sea de utilidad.
bueno esta bien interesante tu aplicacion pero no se puede hacer una pero visual basic bueno ando buscando y buscando pero no se por q todos usan mas c# sera por es muy parecido php ?
bueno te agradeceria mucho si isiera una aplicacion con ajax pero vb .net
q tengas un buen dia luis
Un vídeo
www.lostechies.com/.../video-of-the-david-ebbo-presenting-t4mvc-to-the-community-for-mvc-virtual-user-group.aspx
¡Gracias por la aportación!
Saludos :)
Hola Luis,
El motivo por el cual muestro los ejemplos con C# es simplemente por comodidad personal :)
En cualquier caso no supone mucha complicación pasar de un lenguaje a otro.
Te dejo un link donde tienes un conversor online por si te sirve de ayuda:
www.developerfusion.com/.../csharp-to-vb
Muchas gracias! Simple, claro y directo
Gracias a ti por tu comentario Arturo :)
Muchas Gracias de verdad Gise ya estaba preocupado porque no funcionaba. Me fue de gran ayuda..
Gracias por tu comentario Jairo, me alegra que te haya sido de ayuda :)
You're still not going to get away from our deal :).
Magnífico post, Gisela!
@Hari Ouch! =P
@José M. Aguilar ¡Gracias!
Bastante claro y preciso... ;)
Gracias por tu comentario @ChristianLevini =)
Excelente artículo Gisela. Por hacer un poco de abogado del diablo, no quiero poner en duda las ventajas de las pruebas unitarias, pero la complejidad añadida para poder testar una aplicación como la del ejemplo, me hace preguntarme hasta que punto merecerá la pena este esfuerzo si la función no es muy determinante. Además, sin quererlo se aumentan las dependencias ya que tienes que utilizar Rhino.mocks y el framework structureMap que por supuesto no controlas, creo que este es un claro ejemplo del porque este tipo de test suponen un aumento de complejidad importante con el agravante de que muchas veces te obligan incluso a modificar el propio código. Espero que en un futuro sea mas fácil realizar este tipo de pruebas.
Genial artículo. Para algunos que desarrollamos en php con frameworks como Symfony, no nos pilla por sorpresa el uso de la inyección de dependencias.
Por si algún día tienes que lidiar con estos asuntos en php (nunca digas nunca), te dejo un enlace a una brutal herramienta inspirada en Spring para manejar clases php que implementen dicho patrón components.symfony-project.org/dependency-injection
Yo estoy aplicando los patrones relacionados con IoC en más de un proyecto profesional. Te puedo decir que no ha sido fácil "educar" (así, entre comillas) al equipo en el uso de los distintos patrones que hay debajo de IoC y evitar el uso de ciertos antipatrones que tarde o temprano terminan por aparecer... Aunque ahora, a posteriori, puedo decir que el esfuerzo vale realmente la pena: un código muy desacoplado, que permite cambios con relativa facilidad, una clara separación de responsabilidades y la sensación de "que estamos haciendo las cosas bien".
Y ya centrándonos en MVC, es genial que el framework esté tan pensado para poder enchufar un contenedor IoC... probablemente el único punto que cojea un poco en todo este tema sea los custom filters, pero esto es más culpa del CLR que de MVC, mucho me temo...
Buen post Gisela, justamente esta semana pasada tuve una call en la que se habló precisamente de algo como lo que se comenta en los post, "la complejidad de IoC, si es que la hay, y los valores que aporta". Creo que tanto tu como ciertos comentarios expresan de forma clara y concisa los verdaderos valores de IoC, ayuda a realizar una correcta separación de responsabilidades, mejora la mantenibilidad y el diseño. Por poner una pega, y así tambíen se responde a Juan Irigoyen podrías haber usado Pex y sus Moles para el mock ( con lo cual te quitarías una dependencia de terceros, por lo menos en vs2010)... :-)
Te seguiré leyendo
@Unai, @Juan,
El objetivo de la inyección de dependencias no son las pruebas únicamente. Lamentablemente es uno de los caso de uso más frecuente y muchas veces se confude con que es la única ventaja que tienen.
Buenísimo!
Excelente.
Jeje, y no solo eso, también disponemos de la vista previa , el diseñador ...
Hadi, acaso has entendido esto de mi comentario?? creo que lo he dicho bien clarito :-)
"expresan de forma clara y concisa los verdaderos valores de IoC, ayuda a realizar una correcta separación de responsabilidades, mejora la mantenibilidad y el diseño"
Ni idea que se podía!
Lo único, por ser un poco picajoso, decir que no me gusta mucho utilizar skins porque aplica los estilos inline y es peor desde el punto de vista de rendimiento. Prefiero aplicar los estilo desde ficheros CSS para así poder cachearlos en el cliente.
Pero bueno, que el post venía por otro cosa, pero ya que estamos...:-)
Gracias a todos por los comentarios =)
@Ibon tienes toda la razón y es el motivo por el cual no me gustan =) Pero algunos proyectos si que hacen uso de temas y, dentro de la gravedad, ¡Qué menos que tener intellisense! ;)
@Unai,
Estaba resaltando la referencia a Moles, y haciendo incapie en lo mismo que estuvimos charlando el otro día en el conference call.
Y yo precisamente igual, es el mismo argumento expuesto por Juan sobre la complejidad el que rechazábamos en esa call, el tema de moles es una simple acolación al uso de Rhyno que para nada creo que tenga importancia en el contexto de lo que hablamos no?? :-)
a más ver
Unai
Hombre tu sabes que yo no creo que esto tenga complejidad :).
El que haga un recalco sobre Moles es porque tanto Moles, como TypeMock son herramientas que permiten evitar la inyección de dependencias si el único fín con la que se usa es su re-emplazo en pruebas unitarias. Lo que yo intentaba explicar con mi comentario, es que hay que evitar caer en la trampa de que esto sea únicamente para hacer pruebas e ignorar las demás ventajas y posibilidades que ofrece.
Es importante entender que este "esfuerzo" (y pongo esfuerzo entre comillas porque realmente no lo es una vez que se entienda lo simple que es todo), no es para realizar pruebas. Si uno quiero hacer eso solamente, tal como comentabas correctamente tú, PEX y sus Moles o TypeMock les puede servir perfectamente.
Sobre la aplicacion de estilos en linea ... se aplican estilos en linea si se definen las propiedades sobre el control asp.net, lo ideal es aplicar solo un CssClass y definirlo en un css aparte.
Es mas costoso, pero siempre se puede hacer en una segunda pasada!
Hola Pedro,
Si pero si utilizamos los archivos .skin para determinar el estilo del control especificado, al renderizar los aplica in line. Obviamente resulta más óptimo utilizar archivos css y dejar de lado los .skins =)
Buenísimo el post, pensé que no se podía utilizar con los skins.
Lo que yo hacía, y supongo que no era el único, era montarlos los controles en una page, y luego Ctrl+X Ctrl+V en el .skin quitando el atributo ID del control.
Gran ayuda la de este post, muchas gracias.
Muy buen truco Gisela ;-)
¡Gracias por los comentarios René y Marc!
Saludos =)
Live Mesh es una alternativa más que interesante ;)
Son muy útiles estos servicios!
@yngir, si, también he trasteado un poquillo con ello pero tampoco lo he llegado a usar realmente. ¿Sabes si te permite ver el histórico de los archivos y recuperar versiones anteriores? La verdad es una de las cosas que me gustó de Dropbox =)
Sugar free es mas potente porque permite sincronizar mas directorios y dá mas espacio. Tambien es más barato.
Buenas!!
Yo estoy probando http://www.projectlocker.com/ que ofrecen hosting de SVN de forma gratuita. Para proyectos personales compartidos parece una alternativa razonable.
Ya contaré mis experiencias al respecto... :D
He estado buscando hostings de TFS gratis, pero no he encontrado nada de nada...
@Gisela pues creo que live mesh no soporta control de versiones :(
@Eduard como hosting de SVN yo he probado http://www.xp-dev.com y va realmente bien!
un saludo
@yngir
Pues muchas gracias por el enlace... voy a probarlo también!!!
Un saludo!!!!
Muy útil y práctico como tus otros posts.
A mi también me gusta mucho investigar estos temas sobre todo SOA. Me gustaría invitarte a escribir un artículo técnico, mi correo es: aibanezw@gmail.com
Felicitaciones y que sigan los éxitos.
Aarón Ibáñez W.
adelante !!! estaremos atentos sra, salu2grz
Genial Gis!!!
Gracias.
Fenomenal Gisela!!!.
Aprendí jQuey de tu mano, y ahora gracias a tí me introduciré en LuzDePlata.
:-)
Gracias Joaquín y Jorge por vuestros comentarios =)
@Eduard probaré lo que comentas porque la verdad es que me gustaría tener control de versiones y parece ser que DropBox es una ayuda pero claro no es el fin...
Estuve mirando un poco las posibilidades de Mesh y efectivamente no soporta histórico de versiones (o al menos yo no lo encontré).
@yngir ¡Gracias por tu enlace también! Los tendré muy en cuenta para ver cuál me compensa más...
Al final tener tanto proyecto, tanta prueba y encima probando en varios equipos distintos esto se vuelve una locura.
¡Gracias por tu comentario preguntoncojonero!
Ya está disponible la siguiente entrega =)
Gracias a todos por vuestros comentarios =)
La verdad es que son temas que pueden dar mucho que hablar y muchas veces hay que ser conscientes de las magnitudes del proyecto y la complejidad del mismo para evaluar si es factible ponerlo en práctica.
Hola
Muchas gracias Gisela!
señora, señores, algún aplicación-ejemplo real con código fuente donde se aplique Ioc-ID, por ejemplo, aplicación que utilice applogic, agentes, servicios wcf (implementacion, dominio, ....)
Alli nos veremos !!! :D
Gisela, me agrada como expresas tus ideas. Este artículo es un buen inicio para aquellos que se aventuran a usar NH. Ojalá lo puedas complementar.
Un saludo!!
y si mi request lo hice con una petición Ajax? se puede implementar tu solución?
señora, grabénlo por favor !!! salu2grz
Hola Roberto,
La implementación funciona de la misma manera, aunque realices la llamada a través de AJAX, lo que pasa es que la respuesta se debería manipular de otra forma.
Cuando utilizas el helper de Ajax y añades las propiedades al objeto AjaxOptions, tienes una propiedad llamada OnFailure donde puedes especificar qué función js quieres que se ejecute en el caso de error.
<%=Ajax.ActionLink("HttpException 404 with Ajax", "NotFoundHttpExcepcion", new AjaxOptions { OnFailure = "onException", OnSuccess = "onSuccess", UpdateTargetId = "ajaxTest" })%>
Realmente el control de errores sería a través de esa función.
Puedes recuperar el mensaje del error:
<script language="javascript" type="text/javascript"> function onException(d) { alert(d.get_response().get_statusText()); } </script>
O bien puedes recuperar el mensaje de respuesta (obtenemos la página a donde nos hubiera redirigido con el control de errores que implementamos).
<script language="javascript" type="text/javascript"> function onException(d) { $("#ajaxTest").html(d.get_response()._xmlHttpRequest.responseText); } </script>
Espero que resuelva tu duda.
¡Eso espero Bruno! ¡¡Traeme algo de Seatle!! :P (Por pedir...)
@preguntoncojonero por el momento no tenemos intención de grabar estas sesiones, pero se está valorando la posibilidad de comenzar con el mundo de los webcast :)
Muchas gracias Shuster por tu comentario =)
Espero poder dedicarle más tiempo a escribir sobre NHibernate en futuros posts.
Ya os currais unos buenos eventazos en MAD.NUG, ya... xD
@Eduard :) Este año tenemos preparados cada eventazo !! Espero animarme más adelante y preparar alguno chulo! :D
Gracias por tu comentario ¡Saludos!
Gisela, una preguntilla: es necesario que nos llevemos algun portatil para el evento?
No Javier, no es necesario. Pero IMPORTANTE: La cartera si, que luego nos solemos tomar algo ;)
Jejeje Tomo nota!! Salu2
Muy buena intro Gis! :)
Haciendo pruebas con Expresiones Lambda y Dynamic de C# 4.0, llegue a algo similar a esto:
Func<dynamic, dynamic, dynamic> algo = a, b => b(a);
Básicamente es aplicar una función a un valor, pudiendo hacer:
algo(Math.Abs, -20);
:-P
Dynamic + Functional me parece muy versatil :-D
Haces referncia a una expresion lambda en C# con el operador de ámbito como este ejemplo:
suma = (a, b) =>
return a + b;
};
Con dicho operador puedes componer una expresion de varias líneas de código. Sin embargo yo trabajo en VB.NET y no he visto manera de poder expresar una expresion lambda en varias líneas de código (quizás por desconocimiento mío) ¿Sabes si se puede hacer y cómo?
Gracias
Muy buen articulo Gisela!
Gracias a todos por vuestros comentarios.
@Julio en cuanto a tu pregunta, una de las novedades que traerá Visual Basic 2010 será el soporte multi-línea en las expresiones lambda y subrutinas, lo cual hasta ahora no soportaba :(
Te dejo un link para que puedas echarle un vistazo de cómo será posible.
oie muy buen aporte... gracias eres lo maximo
Muchas gracias por tu comentario cesar :) Me alegro que te sea de utilidad.
Muy bien Gisela, claro y conciso.
Excelente introduccion, solo no entendi porque dices que los arboles de expresion son usados
"más concretamente con LINQ To XML."
Creo que los beneficios de los arboles de expresion son utiles para cualquier implementacion de LINQ, ya que son las expresiones lambdas, convertidas basicamente a datos, para que puedan ser traducidas al destino que se les este dando a estas, LINQ to DB, XML, etc.
Un tip adicional por algo que he notado que batallan algunos developers, con el delegato generico Action<T>, si quisieras usarlo para un metodo que no toma parametros ni regresa valor (void), tendrias que usar el tipo Action (el no generico), si se analiza un poquito tiene sentido, porque Action<T> nunca regresa valor (void), asi que si no tenemos ningun parametro, pues no hay ningun <T> que usar
Gracias Joaquín y Eber por vuestros comentarios :)
@Eber, tienes razón, la verdad es que no recuerdo por qué concreté con XML ya que se usa en todas ellas ¡Actualizado! Gracias por tu última aportación ;)
Gracias Gisela, seguimos tu curso!
¡Gracias a ti por seguirlo! :)
¡Saludos Joaquín!
Gran Post. Una duda....
Cuando defines en un control Silverlight su invisibilidad con [Visibility="Collapsed"], en tiempo de diseño desde el Ms Blend tb desaparece. Esto me resulta muy molesto porque se hace complicado seleccionar el control para hacer cualquier cosa con él. En Windows.Forms no se ocultaba y era mucho más cómodo. ¿Sabes si se puede en el Ms Blend desabilitar esto (que no se oculte en diseño aunque tenga [Visibility="Collapsed"])?. No quiero tener que ocultarlo por código al mostrar la pantalla.
Muchas gracias y un super-saludo !!!.
gracias por el tutorial muy bien explicado.
Hola jorge,
En primer lugar, muchas gracias por tu comentario :)
Efectivamente en Expression Blend, al modificar la propiedad Visibility a collapsed, perdemos el elemento en la ventana de diseño :(
Por otro lado, he comprobado que en Visual Studio 2010 esto no ocurre y funciona "correctamente" . Por lo que he podido leer, la mayoría de la gente hace lo mismo que me comentas.
Si encuentro alguna solución "elegante" intentaré postearla :)
Muchas gracias por tu comentario miguel :)
Ahi nos veremos !!!
Buen aporte Gisela,
Sólo un pequeño detalle, 500 MB de RAM para SharePoint 2007 son "muy mínimos". Mi recomendación:
- 1 GB al menos para WSS 3.0.
- 2 GB para MOSS.
Si hablamos de SharePoint 2010, el tema se complica:
- 2 GB al menos para SharePoint Foundation 2010.
- 5 GB para SharePoint Serer 2010.
JC's
Porras Gisela!!! ..... deja de postear cosas que me interesan que si no no voy a tener vida social.... ;-)
Hola Juan Carlos,
Muchas gracias por tu recomendación :) Estuve mirando más información al respecto y vi que efectivamente se queda algo corto con lo que pude comprobar inicialmente :/
Actualizaré los valores mínimos para una instalación stand-alone.
¡Gracias!
@Jorge :) jejejeje ... ¡Es que si no apunto estas cosas luego se me olvidan! :P Gracias por tu comentario.
¡¡A ver si es verdad Bruno!! :)
¡Saludos che!!
MUy buen detalle me sirvio de mucho
Muy buen artículo, ya hacia tiempo que no me interesaba por los controles telerik, se ve bastante bien que tengan opcion para ASP.Net MVC
Gracias Gisela!
Un detalle, no soportan multi-idioma. Por ejemplo los filtros automáticos del grid (y algún texto) están hardcoded.
Se puede hacer un hack basado en localizar los ficheros javascript pero símplemente tenedlo en cuenta!!!
@Pablo, estuve revisando la doc de Telerik, y veo que al menos en el Grid está disponible la localización: (Aunque no lo he llegado a comprobar)
To localize the grid you must perform the following steps:
You need to create folder named "App_GlobalResources", where localization files will be copied:
Check the App_GlobalResources folder within the installation location of Telerik Extensions for ASP.NET MVC where you can find localization files for English, German, French or Bulgarian.
muy bueno, pero sería mejor utilizar por lo menos 2 tablas y relacionarlas, yo he querido hacerlo, pero cuando compilo me dice que la tabla1 no esta asignada, le quito las relaciones a las tablas y todo marcha bien
Hola Gisela, me encanto tu blog, a favoritos !!
Un consulta, la grilla puede mostrar un combo?
Otra cosa, la grilla se le puede cambiar el estilo, para que tenga un formato mas tipo simple, por ejemplo sin color ni imagenes de fondo??
Gracias y saludo.
Con el permiso de Gisela, le contesto a José:
Una implementación posible, a la que estoy seguro de que Gisela llegará en breve, inyectaría el repositorio en el controller via el constructor (con la ayuda de Windsor y reemplazando la ControllerFactory de MVC).
De esta manera, el controller se puede probar ya que se inyecta el repositorio, el cual, por supuesto, estará "mockeado" y, por lo tanto, no necesitara del session factory.
Por otro lado, no creo que sea necesario probar el atributo puesto que su código es sumamente sencillo y menos aun el funcionamiento asociado al controller puesto que eso es responsabilidad del runtime de MVC.
Por ultimo, con este diseño, creo que quedan atendidas las dudas que planteas en el punto 3 y 4.
library does not mean "libreria"
this is a bookshop
"biblioteca" is the correct
muy bueno, felicitaciones. los ejemplos son claros y directos.
Muchas gracias por tu comentario Pablo, me alegro que sea de utilidad :)
Hola, una consulta, tienes el ejemplo para Word2007?
g
Hola Gonzalo,
No, no tengo ese ejemplo... sorry.
Intentaré publicar algo al respecto proximamente.
Dios mío que me sangran los ojos, me estas diciendo que tiras de de backup en MOSS?
Que dios nos pille confesaos :S y que viva el Site Definition
Hola CharePoint,
El comentario del restore vino a que me pidieron realizar una copia exacta de un entorno a una máquina virtual y me indicaron que utilizaban stsadm.exe para hacer las copias.
Desconozco si es la forma correcta o no, ya que apenas llevo 2 días con temas de Sharepoint, pero lo único que me importaba por el momento era conseguir la misma versión del sitio del cual procedía el backup.
Gracias por estos post.
Realmente estan grandiosos..
Seguiremos en espera de mas
saludosa
Ouch que lastima no poder asistir. Si vuelvo a pedir un día en mi empresa para asistir a un evento me despiden :(
Muchas gracias por tu comentario Javier, me alegra que sean de utilidad :)
¡Olé Gisela!
Te veo enganchada ya a las charlas. Me alegra y mucho. :-))
probe esta opcion y tuve resultados parciales. si bien en localhost/proyecto figura el index, cuando presiono algun link da error (eg: asp.net mvc el link de about) Que puede ser que me este faltando, chequee las rutas pero estan en default. debo cambiar algo?
gracias!
sebastian.
Hola Gisela,
como estas? una nueva consulta y muchas gracias desde ya por la orientacion... Lei los controles telerik y observe los controles grid siendo una lista de datos de tabla. Conoces si estos controles se puede customizar para mostrar una lista de productos con sus imagenes, texto, precios, etc tal como seria en una aplicacion estandar de comercio electronico cuando lista una categoria?.
muchas gracias, excelente el blog!.
sebastian
Hola Sebastian,
¿Tienes instaladas las librerías de ASP.NET MVC en ese equipo? En caso contrario, deberías poner las siguientes dll de tu proyecto con copia local:
System.Web.Abstractions
System.Web.Mvc
System.Web.Routing
En el post Subir una aplicación ASP.NET MVC a Windows Azure aparece la forma de hacerlo.
Espero que sea de utilidad :)
@Cristian si, es posible mostrar un combo añadiendo uno de los campos como tipo template. Por ejemplo:
columns.Template(o =>{ %> <%=Html.DropDownList("Combo") %> <% });
Por otro lado, existen una serie de css donde puedes modificar el estilo. Incluso en la página de Telerik tienen algunos disponibles desde lo más simple.
¡Lamento la espera! No me di cuenta de tu comentario en el correo :(
@Sebastian es posible hacer lo que comentas :) En realidad estos controles son bastante customizables y puedes modificar la mayor parte de su comportamiento y estilo.
Gracias Gisela, segui el consejo modificando a true las propiedades de las dll pero no funciono. De hecho cambie todas las dll dentro de References a true pero tampoco. Me llamo la atencion que en modo start debugging funciona perfecto con las mismas url´s no ha si en IIS usando localhost.
Seguire intentando, muchas gracias por todo!.
Listo, habia olvidado de sacar el checkbox a "comprobar si el archivo" existe dentro de "agregar o modificar asignacion de extension". muchas gracias nuevamente!
¡Gracias por los comentarios!
@Javier es que con tanto evento es complicado asistir a todos :)
@Jorge bueno enganchada, enganchada jejejeje hago lo que puedo... Pero todavía me resulta complicado y me falta soltura con estas cosas :/
Si está Vicente es una buena garantía de calidad... lástima que ese día no podré pasarme por Madrid...
Un pequeño consejo, deberias comprobar los parametros antes del envio del mensaje y devolver el estado del metodo send para comprobar si la operación se ha realizado correctamente. Quizas olvidastes el test unitario ???
Hola Anónimo,
Soy consciente de que hay que realizar ese tipo de comprobaciones. De hecho, para que quede más elegante, esa funcionalidad no debería estar en este método. Se podría utilizar tanto Data Annotations, IDataErrorInfo, etcétera :)
La idea de este post es mostrar cómo se pueden embeber imágenes dentro de un email de la forma más simple posible.
Tampoco olvidé las pruebas unitarias :) Es cuestión de simplificar una funcionalidad en concreto.
Gracias por tu comentario.
Excelente como siempre.
Tenia tiempo con esta duda.
hola, buen post! sobretodo para los usuarios que piden correos masivos(mkt).
Hola, tengo un problema con los controles de telerik, el scrolling e IE7. Si tenemos los controles dentro de una capa con la propiedad css scrolling:overflow, los controles no se mueven según más manejando el scroll, pero sí las demás capas que no forman parte de los controles de telerik (cómo es lógico). Con IE8 no hay este problema ¿sabrías darnos alguna pista de como solucionarlo? Muchas gracias y un saludo. Raquel
Seguro que si :D
¡Gracias por tu comentario Jesús!
Muy útil, grz sra.
por curiosidad, ¿qué plugin utiliza para WLW para escribir código fuente formateado ?
salu2&grz
Me gustó mucho tu charla, se nota que te gusta la informática, sigue así.
Buenas Tardes.
Me gustaría formular una pregunta. Si necesitara implementar el Servicio en N puntos diferentes (servidores), como haría para, a partir de una URI, poder llamar de manera dinámica a uno en particular?
Muchas gracias por la posible colaboración prestada.
¡Muchas gracias Mario!
Este tipo de comentarios siempre animan a una a continuar :)
Hola preguntoncojonero :)
No es un plugin para WLW, es una librería llamada
SyntaxHighlighter.
Hola Raquel,
Existe un bug relacionado con el scrolling en IE7. No sé si lo habéis revisado. Te mando un link sobre ello:
http://bit.ly/aOpOlT
Espero que sea de utilidad.
Gracias por tu comentario blaxzoser :)
Hola Jorge, creo que no entiendo bien el escenario que planteas. ¿Podrías explicarlo con algo más de detalle?
Buenos Días.
La situación es la siguiente: tengo desarrollado el servicio web que se encarga de la consulta de un archivo en una ruta especificada.
Ahora se debe colocar ese servicio en varios lugares diferentes, y se debe acceder a ese servicio para traer archivos de esos lugares.
Desde una aplicación cliente tengo las diferentes Url's de donde debería implementar el servicio, pero necesito saber como indicar esa ruta para poder invocar el servicio.
Muchas gracias.
Excelente tuto, se agradece. Ya tenía cubierta la funcionalidad de Word y en Excel estaba un poco turbio.
Me has ayudado bastante con un proyecto que tengo en este momento.
Gracias!
Hola Gisela, he intentado poner en IIS el servicio como indicas, configurando como página de inicio el Service.svc, pero resulta en error 404, no lo encuentra con tu ejemplo de cliente ni en el explorador q podrá ser?, gracias
Hola Jorge, si lo que quieres es acceder a los distintos servicios desde una aplicación cliente de forma dinámica, podrías hacerlo de la siguiente manera:
var uri = new Uri("MyDinamicUri");var myService = ChannelFactory<IService>.CreateChannel(new BasicHttpBinding(), new EndpointAddress(uri));myService.Suma(1, 2);
Hola Edwin ¿Pusiste en el directorio virtual el archivo .svc como archivo de inicio?
Muchas gracias por tu comentario Mau, me alegra que te fuera de utilidad :)
Sii Gise, supuestamente está todo bien, mi ISS esta loco :(.
Hola Edwin,
Vaya :( También escribí un par de post sobre casos que pueden ocurrir:
System.InvalidOperationException IIS 7
Failed to access IIS metabase
¿Qué SO estás usando?
Espero que te sirva,
Tengo todo tal cual siguiendo los pasos y el IIS me tira este error, sabrias orientarme a que se puede deber ? ... ya que no logro dar en la tecla
Error de servidor en la aplicación '/WCF'.
Error de configuración
Descripción: Error durante el procesamiento de un archivo de configuración requerido para dar servicio a esta solicitud. Revise los detalles de error específicos siguientes y modifique el archivo de configuración en consecuencia.
Mensaje de error del analizador: Se ha producido un error al cargar el archivo de configuración: No se pudo empezar a supervisar los cambios de 'C:\Documents and Settings\mpeccin\Mis documentos\Visual Studio 2008\Projects\WCF' porque se ha denegado el acceso.
Error de código fuente:
[Líneas de código fuente no relevantes]
Archivo de origen: C:\Documents and Settings\mpeccin\Mis documentos\Visual Studio 2008\Projects\WCF\web.config Línea: 0
Información de versión: Versión de Microsoft .NET Framework:2.0.50727.3603; Versión ASP.NET:2.0.50727.3082
Hola, esta buenisimo tu post, pero no me funciona en un servidor con windoes 2003 server, ya se esto es para windows xp...pero yo estoy haciendolo correr en win2003 server, tendras algo por ahi que me pueda orientar al respecto, gracias
Hola livanbal,
En ese caso, la versión de IIS es la 6. Te paso el link de cómo sería la configuración para ese caso :)
Subir una aplicación ASP.NET MVC a IIS 6
Hola Miguel,
El error te está indicando que tiene problemas con el web.config.
Comprueba los permisos del directorio y que está correctamente el archivo de configuración.
Gisela,
¿Hay algún sitio dónde se pueda ver el video de la presentación de ese día?. Estuve apuntado para asistir pero al final no pude ir.
Juan Pablo
Hola Juan Pablo,
Lamento decirte que no fue grabado dicho evento :(
Hi Gise, ya lo he logrado en ISS 7, pero lo llamo desde un cliente en la misma aplicacion hecho en ajax y me retorna el error 500, además al cambiarle cualquier cosa en el web.config, se daña el servicio y arroja errores aleatorios de la forma:
Could not load file or assembly 'App_Web_xi4hie0l, Version=0.0.0.0, ..........
A que se podrá deber eso?
Cuando te responde con un error 500 lo más probable es que esté lanzando el servicio WCF una excepción no controlada. Para localizar el problema, te recomiendo que ataches el proceso donde está corriendo tu servicio (Debug => Attach to process) y seguramente llegues al error :)
En cuanto a los archivos App_Web_xXxXxX lo primero que probaría es a eliminar los archivos temporales de la siguientes ruta:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\
No tiene alguna implicación o daño colateral quitar ese módulo ??
Excelente post, gracias por compartir la información Gisela. Un saludo!!
Que skin mas guapo le has puesto al VS2010, es igualito a su hermano mayor jeje ^^
Alu2
Muchas gracias por tu comentario Rául, me alegra que te sea de utilidad :)
¡JAJAJAJA! Es que soy una nostálgica Bruno :P
En realidad estás usando la nueva versión de ServiceModel y soporta la funcionalidad anterior que necesitamos. No debería haber problema.
Gracias por tu comentario :)
Por favor, grabénlo !!! o que se pueda bajar el material-presentación-demos-código...
Lo harán en SecondNug en un futuro ??
Salu2&grz
muy bueno felicidades no se si me podrias ayudar necesito hacer un chat que el servico este alojado en iis desde 0 y no tengo mucho conocimiento
como a preguntoncojonero a mi también me interesa bastante este tema. No puedo bajar a Madrid sólo para acudir al evento (bueno, poder si puedo, pero es mucha tirada sólo para eso :), pero estaría bien poder verlo en directo online, o después si lo graban, o al menos una transcripción o algo.
te hago una consulta... es Entity framework el data access oficial de ASP.net MVC o Linq to SQL?. Tenes conocimiento si Microsoft se decidio por alguna de las dos tecnologias?. Estoy comenzando un desarrollo que sera mi primero en .net y no se que acceso de datos elegir...
Gracias!!. Sebastian.
@sebastian
Linq to SQL ha entrado en modo "mantenimiento" y NO será ya mejorado... siendo políticamente incorrectos podríamos decir que si no está muerto está moribundo.
Si te estás planteando usar un framework de acceso a datos, no consideres Linq to SQL, considera Entity Framework u otras alternativas que no están nada mal como Nhibernate.
Un saludo!
Usualmente no los grabamos, pero como se que es muy util tenerlo guardado, le damos una vuelta y vemos si lo podemos grabar.
@Eduard muchas gracias! Voy a leer sobre ellas. saludos y gracias.
Gracias Bruno por contestar :) Veremos lo que podemos hacer.
¡Gracias por vuestros comentarios! ¡Saludos!
Muchas gracias por vuestros comentarios y a Eduard por resolver la duda :) Estuve en modo OFF el fin de semana por motivos varios.
Hola Ruben,
En el training kit de Visual Studio 2010 tienes justamente una Lab que te muestra como crear un chat con WCF. Puedes descargarlo en el siguiente enlace.
Señora,
está el Configuration Section Designer en codeplex.com, puede ser útil para ello,
Sería interesante saber cómo encriptar secciones personalizadas.
Salu2&grazie
otro hit! gracias
Gracias por vuestros comentarios y por el programa preguntoncojonero.
Muchísimas gracias!! Me solucionaste algo que me estaba volviendo loco!!
Muy buen post!!
Un detalle: La aplicación en Codeplex dice que no está todavía publicada!
Hola Facundo,
Muchas gracias por tu comentario, me alegra que te haya sido de utilidad :)
Muchas gracias por tu comentario Eduard :)
Ya está publicada la app en Codeplex. Ayer no me dió tiempo a subirla :(
Muy bien trabajado el post, felicidades!
Muchas gracias por tu comentario Andoni :)
"Autenticación Básica con todo lo que ello suponía: el envío de nuestras credenciales con cada petición fácilmente descifrable."
Por Https como debe de hacerse es bastante segura ;)
Hola Cojonero jeje,
Es otra de las opciones pero no es una dentro de las posibilidades de las APIs que ofrecen estas compañías, por lo que no valdría en este caso :(
gracias ,muy interesante y muy bien explicado.
Gracias por tu comentario aprendiz :)
señora se podrá descargar la presentación y código ?? no graba´ran estos eventos ??
señora, se puede descargar el código del ejemplo ? salu2&grz
Si, la presentación se podrá descargar desde www.madriddotnet.com cuando termine el evento. En esta sesión en concreto, no creo que haya código como tal. De cualquier modo todo el material que Roberto nos facilite será publicado :)
Por el momento no podemos garantizar las grabaciones en MAD.NUG pero estamos trabajando en ello.
Hola preguntoncojonero :),
En la página de Telerik puedes descargar todas las demos Open Source para ASP.NET MVC. Por otro lado, si lo que te interesa es comprobar que efectivamente se puede cambiar el idioma, puedes adjuntar a sus demos el código compartido en el enlace tal y como explico en el post.
Dos buenas formas para ver un evento :D.
¡Gracias por tu comentario Fran! :)
Y eso que Gise es buena gente y no comenta nada de las cervecitas post-evento !! eso si, solo disponibles en la versión "live"
la gente de SNUG, tenemos muchas ganas de hacer este evento en modo coop! :D
Los de la versión Live os diremos en otro momento como estaban de ricas las cervecitas. :-)
(Hecho en falta a preguntoncojonero diciendo algo sobre esta noticia... que ha costado pero ha llegado). :-)
muy interesante habia logrado llegar hasta el encabezado de los grupos. Ahora cambiar el texto de los demas componentes era algo que neesitaba hace tiempo. Por otra parte no sabes como hacer lo ismo pero en los grid de telerik para winforms?
Ay Jorge!!!
La verdad es que me parece muy bien aunque prefiero los nuevos capítulos de Enjuto Mojamuto :)
Hola Silver,
En primer lugar gracias por tu comentario :)
A día de hoy no he trabajado con los controles para WinForms. Existe un apartado para localización y puedes acceder a través de este enlace.
Si bien creo que no hay ninguno en español, te pueden dar una ligera idea de cómo realizarlo.
Espero que te sea de utilidad.
por fin lo han conseguido señores, un paso adelante !! bravo !!!
veo que hay plagiadores, eso demuestra que la parte cojonera ha cumplido su misión :-)
Hola Oye y si yo solo necesito mostrar un tabbedpanel como lo haria con el $(document).ready de verdad soy bastante nuevo en este tema.
Muchas gracias y se ve que este post me va a sevir mucho para entrar a JQUERY mil Gracias
gracias estaba batallando, ya pude hacer la grafica, gracias por la informacion
Hola Vic,
No tengo claro si lo que necesitas es crear un tabbedpanel o simplemente mostrar uno que tienes oculto.
Te paso este link donde puedes ver cómo utilizar el tabbedpanel de JQuery UI jqueryui.com/.../tabs
Si lo que tienes es un tabbedPanel oculto y simplemente necesitas mostrarlo podrías hacer lo siguiente:
$(document).ready(function() {
$("#idTabbedPanel").show();
});
En realidad, lo único que hace ese método de JQuery es mostrar el elemento seleccionado poniendo su propiedad display a block.
Espero que te ayude.
Hola Eduardo,
Me alegra que te haya sido de utilidad :) ¡Muchas gracias por tu comentario!
creo que no formule bien la pregunta ahi va
¿Necesito utilizar el Document.ready para que el contenido de las pestañas se muestre?
Gracias!!!!
Hola. Muy bueno el post. Pero me quedó una duda. Como hago para testear una action de un controller ? lo quise hacer y me dice que la session no tiene un contexto asociado.
Si, no se puede utilizar un tabbedpanel anidado con otro, yo tengo usando la version 2.2.1 y tampoco me aparece el contenido de los tabs.
Alguna ayuda con esto, se utilizara el document.ready?
Hola Jorge y Vic,
En primer lugar disculpad la espera, estos días han sido un caos por motivos de trabajo y no he podido estar pendiente del Blog :(
No he tenido la oportunidad de trabajar con el plugin Struts2 y desconozco su funcionamiento por el momento. Lamento no poder ayudaros a día de hoy pero, si mi tiempo me lo permite, intentaré pelearme con él para ver si conseguimos una solución al respecto.
¿Realmente haría falta la clase Computer?
¿No nos llegaría con "unir" el comportamiento de Computer-Machine y acceder al objeto actual this?
Hola Eugenio,
Si que podemos omitir la clase Machine e incluir directamente sus propiedades dentro de Computer y así ahorrarnos dicha clase (Creo que es a eso a lo que te refieres).
El motivo por el que he decidido incluirla en vez de eliminarla es porque, si se sigue ampliando dicho ejemplo, las propiedades incluidas dentro de Machine son un conjunto y por lo tanto un objeto en sí (Están dentro de la máquina).
Si el día de mañana quiero añadir periféricos a la clase Computer igual crearía un List<Devices> o algo así. Solamente era porque no me parece elegante soltar las propiedades directamente en computer cuando se compone de más objetos :)
Cada día lo creo mas ... ASP.NET MVC los lleva al lado oscuro !! :P
MMmmm...
Las ventajas de una fluent interface no son solamente que el código es más "legible" (que también) sinó sobre todo que como desarrollador que uso una fluent interface, su uso es mucho más sencillo, ya que la interfaz me ofrece sólo en cada momento aquellos métodos (o propiedades) relevantes para lo que estoy haciendo (en contraposición a una interfaz "tradicional" donde se me exponen todos los métodos y yo debo escoger cual quiero).
Si se usa junto con algo tipo "intellisense" (y que IDE no lleva algo parecido hoy en dia?) el resultado es brutal: vas descubriendo los métodos y propiedades "a medida que las necesitas"...
saludos! ;-)
Gracias por la aportación Eduard :) No caí en ello cuando lo escribí.
¿Se parece al WITH de VB, o es deja vu?
y la base de datos? me pide una base de datos.
Hola Andrés,
Este post es parte de una serie de artículos que escribí durante la primera versión de ASP.NET MVC. En el mismo, antes de comenzar con la parte de AJAX, te facilito el enlace en el cual se crea la base de datos :)
geeks.ms/.../mvc-nhibernate.aspx
Saludos, tengo el siguiente problema:
Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.
Parser Error Message: Unrecognized configuration section section.
Source Error:
Line 76:
Line 77: <!-- Hibernate configuration. -->
Line 78: <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler,NHibernate" requirePermission="false"/>
Line 79: <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
Line 80: <session-factory>
Gisela o alguien mas ayudeme por favor.
:P
Hola Fausto,
Perdona por la espera,
Parece que no está reconociendo correctamente la nueva sección de la configuración de NHibernate.
Comprueba que está correctamente definida dentro de <configSections> Sin que esté ubicada dentro de ningún </sectionGroup>. Me explico:
<configuration> <configSections> <sectionGroup ... </sectionGroup> <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler,NHibernate" requirePermission="false"/> </configSections>
Espero que con esto te sirva :)
Hola, estoy intentado que funcione en mi equipo el ejemplo y me pide un PIN
Buenas boluda!!
El jquery es divino... pero para integración de ajax y jquery como java no hay nada, olvídate de Microsoft.
En la declaracion private readonly IMachine _machine; creao que el tipo de dato es Machine o esta sin definir la interface IMachine.
Saludos y gracias.
Hola mai,
Cuando eliges el servicio que quieres utilizar y accedes al segundo tab, solicitas los tokens y, automáticamente, la aplicación abre una ventana del navegador, donde debes aceptar la autorización al servicio a través de tu aplicación. Una vez que des el OK te dará un número en el caso de Twitter y un conjunto de letras en el caso de Yahoo :)
Espero que esto te sirva para continuar.
Hola Nachetex,
Gracias por tu comentario :) Espero volver a tocar algún día Java pero, por el momento, mi mayor parte del tiempo se la dedico a .NET que es con lo que trabajamos.
¡Ojalá pudiera abarcar más! :)
Hola a todos,
@Lentucky, creo que si... La verdad es que hace mucho que abandoné el VB.NET pero viene siendo lo mismo sólo que ahora se estila también en C#...
Hola @ATP, el tipo de la variable privada _machine es correcto: Debe ser IMachine. Esto es así porque la clase Machine está implementando dicha interfaz cuando cambio el ejemplo a Fluent Interface... sólo que no mostré esa parte en el ejemplo :/ Lo agrego entonces para que quede más claro :) ¡Gracias por la observación! :D
Me parece una moda curiosa esto de las fluent interfaces. Supongo que triunfará como la cocacola :-P
Gracias por tu comentario Jesús :)
La verdad es que he visto utilizarla en varias APIS y demás y queda bastante elegante :D Yo empecé a usarlo hace poco para extender los controles de ASP.NET MVC.
Hola de nuevo,
Después de todas las personas que han preguntado sobre la semejanza del WITH de VB.NET con Fluent Interface, el Guille ha escrito un artículo sobre ello:
www.elguillemola.com/.../fluent-interface-no-es-solo-simular-el-with-de-vb
Espero que resuelva las dudas :)
Si no estoy en un error, la gran diferencia entre el uso de una interfaz y el with de VB es que con el último NO estamos obligados a utilizar todos los miembros, métodos y propiedades de la interfaz.
Ahora, una pregunta: ¿no se compromete el rendimiento al tener que tener una interfaz por cada objeto, sólo para tener un código más "mantenible"?
Muy buen articulo, mis felicitaciones. Me ha servido de gran ayuda.
Hola sch,
Gracias por tu comentario, me alegra que te haya sido de utilidad :)
Para complementar tu ejemplo, en un simple webform (sin MVC) se puede usar el control HyperLink para lo mismo:
HyperLink hlink = new HyperLink();
hlink.NavigateUrl = @"http://www.gravatar.com/" + result;
hlink.ImageUrl = @"www.gravatar.com/.../" + result;
this.Controls.Add( hlink );
Muchas gracias por el aporte Lentucky :)
Hola Gis,
disculpa el fuera de topico pero estoy aprendiendo aspnet mvc y tengo dudas. cuento con un desarrollo en webforms donde los aspx y los aspx.cs - aspx.cs.designer - estan todos juntos. Busco refactorizar para enviar los cs a controllers y los aspx a views. En tu experiencia puedo hacerlo asi de simple o me voy a encontrar con mas dificultades. Que curso de accion me sugeris sino para realizar esta modificacion refactor del codigo?.
como siempre muy agradecido, sebastian.
El problema en micaso es que la página la he pasado por varios servidores, y busca aún módulos antiguos, perfecto, los nuevos deben de cumplir las funciones de los antiguos.
Hola, necesito saber como usar las siguientes referencias y de donde las saco:
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.StorageClient;
gracias
Gracias..., GRACIAS :'(..., ya teniá un ratillo buscando algo como tu artículo, sigue adelante que por personas como vos se progresa
Hola Marco,
como puedo hacer lo mismo pero llamando desde cualquier *.js a un jquery.js
Hola Gis, esta muy interesante el blog seria posible que publiques tambien el source.
Hola Roger,
En el apartado Attachment del post puedes encontrar el link para descargar el source del ejemplo. Sería el siguiente:
geeks.ms/.../ClienteJSON.rar
A mi lo de Fluent Interfaces me parece genial
Recuerdo que eso lo hacia desde hace mucho con PHP :-)
igual esta bueno
@Lentucky
El uso de interfaces no compromete en absoluto el rendimiento... o sea que tranquilo en este punto! :)
La verdad es que como comenta Guille en el enlace que ha pasado Gisela, Fluent Interfaces es un tema mucho más complejo que el encadenamiento de métodos (aunque este sea lo primero que se vea). Puedes pensar que una interfaz fluida es una interfaz que "se va describiendo a si misma a medida que la vas usando". A ver si algún dia de estos saco algo de tiempo y comento algo más al respecto en mi blog!
Hola Edgardo,
Se ve que cada lenguaje va a su ritmo :)... Mientras que no se queden estancados la cosa no va mal ^^
A mi también me gusta mucho la idea :)
@Eduard Gracias por tu aportación...
Hola Daniela,
¿Podrías exponer tu caso concreto? No entiendo bien a lo que te refieres...
Hola Cloudy,
Las dll se encuentran dentro de Archivos de Programas en una carpeta llamada Windows Azure SDK. Dentro de ella encontrarás una llamada ref donde podrás seleccionarlas :)
En el apartado Windows Azure de mi Blog verás varios ejemplos con estas dll.
Gracias a ti por tu comentario :)
Hola sebastian,
Hace algún tiempo realizamos una migración de ASP clásico a ASP.NET MVC. Si bien no hay ninguna herramienta o pautas a seguir en este tipo de conversiones, lo que te recomiendo es que intentes migrar la aplicación por funcionalidades. De esta forma puedes permitir que una app conviva con la otra y también ir comprobando que, posiblemente, parte de la funcionalidad que ya tienes migrada pueda ser reutilizada en otros escenarios.
Si toda la lógica de negocio de la aplicación Web Forms está en el code behind de las páginas es muy posible que la tarea sea más tediosa :(
No es tarea fácil pero creo que merece la pena.
Muchas gracias por tu comentario y perdona el retraso.
muchas gracias por tu mensaje. Lei bastante sobre el tema y encontre varios errores. Lo mejor que encontre al momento es www.packtpub.com/.../mixing-asp.net-webforms-and-asp.net-mvc donde muestra como mezclar soluciones.
En el caso actual tengo varios problemas con los archivos mas que nada con el error
"[InvalidOperationException: The view at '~/.....ascx' must derive from ViewPage, ViewPage<TViewData>, ViewUserControl, or ViewUserControl<TViewData>.]"
todo lo demas lo pude empatar, pero no comprendo porque presenta un problema cuando hago un renderpartial de archivo.
Seguire buscando:S muchas gracias!!
Excelente el ejemplo que muestras. Muchas Felicidades.
disculpen apenas ando en el mundo de telerik, y quisiera preguntarles si alguien tiene un manual en español donde explique los controles telerik. porfavor me urge gracias.
Hola Andrea,
No hay problema ninguno ^^. Creo que no hay actualmente manuales en español sobre los controles de Telerik :( Pero si nos explicas lo que necesitas igual algun@ podemos ayudarte :)
Muchas gracias por tu comentario Irving :) Me alegra que te haya gustado ;)
Hola! Sé que este blog trata temas de .Net pero en el ejemplo veo que usas la función bind() de jQuery sabes cual es la diferencia entre bind() y poner solamente click()? Llevo tiempo buscando eso...
Gracias Gisela.
Hola Bohorkez,
En primer lugar, gracias por tu comentario :) Si bien la mayoría de los ejemplos son en .NET, tengo un apartado de JQuery donde tengo algunos artículos relacionados.
La diferencia entre bind y click es que en bind puedes indicar el evento que vas a asociar a el/los elementos e incluso asociar varios eventos a la vez (además puedes asignar eventos personalizados), por ejemplo: click, focus, etcétera. Cuando ocurre cualquiera de esos eventos la función definida se ejecutará.
Sin embargo, cuando usas click es únicamente para dicho evento.
Te adjunto el enlace donde hablo de ello por si te es de utilidad:
geeks.ms/.../los-eventos-en-jquery.aspx
Más claro imposible. Jalón de orejas para mí por no darme cuenta que habías escrito un post entero sobre ese tema!!
Gracias por tomarte el tiempo de responderme Gisela.
Gracias a ti por tus comentarios :)
Hola, soy un desarrollador nuevo en ASP.NET MVC
y este tema de las "fluent interfaces" me parece interesante, espero pronto hacer uso de ellas.
Saludos!!
Ánimo y recúperate que se echan de menos tus artículos.
Un saludo!!!!!!!!!!!!
Ánimo Gis,
Espero que todo se solucione y pronto estés por aquí dando guerra :-).
Muchó ánimo Gisela, paciencia y tiempo que seguro que mejoras!!!
Te deseo todo lo mejor Gisela. Que te mejores pronto. Saludos
Ha mejorarse!!!! Se nota tu ausencia en Geeks.ms :(
Gi,... ya sabes, un fuerte abrazo y a mejorarse. ;-)
Ya nos veremos.
Cuidate , mejorate y sigue formandote leyendo que para eso con el brazo izquierdo y el mouse tienes suficiente :-).
Hola, Gis!
Mucho ánimo, seguro que pronto estás de vuelta dando caña :-)
Mientras tanto, a cuidarse mucho!
Muchos ánimos Gis, y a recuperarte lo más rápidamente posible.
(Sólo te conozco por tus colaboraciones, y soy bastante más mayor, sólo intento aportar un punto de vista positivo, pido disculpas a quien le pudiese molestar mi intervención)
Quizás pueda estar equivocado, pero desde un punto de vista alternativo, sugiero que aproveches las circunstancias para desconectar un poco de las tareas que puedan implicar una cierta tensión. (Y en esto, quizás… habría que incluir el Twitter).
A veces, los dolores pueden tener su origen en tensiones, puntos de estrés, y posturas corporales forzadas, que vamos acumulando y de las que no somos plenamente conscientes, con frecuencia cuando intentamos hacer más actividades de las que la prudencia aconseja.
Si este pudiese ser el origen…, lo más aconsejable sería reducir tensiones e intentar cambiar en algo los hábitos. Una expresión que se atribuye a Einstein, dice que “Locura es intentar obtener resultados diferentes haciendo lo mismo”
Si tienes oportunidad de leer un libro, creo que podría ser de utilidad, quizás en tu caso y en otros muchos, para “deshacer” dolores crónicos: “MOVIMIENTO CONSCIENTE. de Anat Baniel“
edicionesurano.blogspot.com/.../movimiento-consciente-anat-baniel.html
(no tengo ninguna relación ni con la editorial ni con ningún centro vinculado a estas terapias, simplemente me parece positivo)
Lo importante es que antes que nada te mejores!!!
Cuando vuelvas aquí seguiremos, esperándote!
No entendí nada pero sos muy linda asique lo lei todo igual
Que no decaiga el ánimo!! Tómatelo como unas merecidas vacaciones =)
muy buena la explicacion!
Buenas;
tengo un problema, no me genera el excel, nosé si es que hago mal la llamada desde el main o algo, ¿me podrías ayudar?
Otra cosa:¿Con qué nombre se debería generar el excel?
Saludos y gracias :)
Muy bueno, me saco muchas dudas, felicitaciones!!!!!!!!!!!!!!!!!
Versión Actualizada aquí Una vez que tenemos agregado un servicio en Windows Azure , estamos
Está siendo mucho más lento de lo que pensaba :(
Muchas gracias por tu comentario Leonardo, me alegra que te fuera de utilidad :) ¡Saludos!
Hola Germansn,
¡Muchas gracias por tu comentario!
Hola Shuster,
Me alegra que te haya parecido interesante, creo que es una forma bastante bonita de hacer las cosas :)
¡Gracias por tu comentario! ¡Saludos!
bien ahi....renegué -_- jja gracias
¡Gracias por tu comentario Jhon! Me alegra que te fuera de utilidad :) ¡Saludos!
gracias...
recien toy empezando a usar sql server 2008
y ese probleme se me atrabezo...
deberas muchas gracias
Hola Manuel Alejandro,
¡Muchas gracias a ti por tu comentario! :)
necesito hacer una grafica de dispersion
podrian porfavor ayudarme saludoss
Hola Eveli,
Creo que puedes encontrar graficas de dispersión en el proyecto de ejemplos, en la siguiente dirección:
code.msdn.microsoft.com/mschart
Espero que te sea de utilidad :)
Gracias por la informacion.. no entendi esta parte
"Una vez añadido, necesitamos especificar el idioma en nuestro grid a través del método Localizable que ofrece Telerik:"
Eso donde va?
muchas gracias por el aporte..!! es muy valioso...pero me perdi en el mismo lugar que ariel...:( llegue hasta colocar el archivo en la carpeta...esto solo sirve para ASP.NET MVC?? yo trabajo con el asp.net comun....desde ya muchas cracias!!!
Hola disculpa una pregunta yo utilizo un componente calendario de jquery el cual funciona perfecto ejecutando solo en un formulario o ventana, pero cuando a ese formulario es llamado por medio de ajax (en forma asincrona), ese calendario en especifico ya no quiere funciona tu me podrias a ayudar para saber que es lo que tengo que hacer.
Roberto
Hola Ariel y miguelpancho,
En primer lugar, perdonad la demora (actualmente estoy teniendo problemas de salud y me impide estar al día con el blog :()
Si os fijáis en el ejemplo que muestro del grid, podéis ver que uso el método localizable que os comento:
.Localizable("es-ES")
En cuanto a otros controles de Telerik, desconozco si será el mismo procedimiento :(
Espero que os sea de utilidad.
Muchas gracias por vuestros comentarios ¡Saludos!
Podrías copiar el código (por ejemplo aquí: http://paste.ideaslabs.com/ )
Quizás así podamos ver dónde está el problema :)
Hola, a mí me pasa igula que a Ariel y a miguelpancho.
No se en que archivo se encuentra el método Localizable, entonces no podemos modificar dicho método.
yo añadiría "<" como carácter sospechoso, que evitará ataques de iñección de script, que pueden generarse a partir de iñección sql :-P
El mejor tip para este tipo de ataques seria utilizar procedimientos almacenados en nuestra BD.
@PyxisPyro, el uso de Procedimientos Almacenados sobre todo en EF, es poco recomendable ya que debes abstraerte de la base de datos, las recomendaciones de este post no son utilizar SP de forma masiva.
@Juan, ¿porqué dices que los SPs no son recomendables? hasta donde yo entiendo de EF (que es más bien poco), existe una posibilidad de utilizar EF+SPs, es más trabajosa, pero los commands+params pueden ahorrarte más de un susto en este escenario.
Ojo que esto saca 2 temas pa debatir:
- realmente necesitamos abstraernos de una base de datos? cuantas veces hemos cambiado Oracle por SQL, o Informix por DB2 en un proyecto?
- usar SPs o no usar SPs. Ahora la tendencia vuelve a ser no utilizar SPs, pero como esto cambia cada vuelta de reloj :D
Ahh y @Gise, nice article XD
@creo que el concepto de abstraerse de la base de datos no es tanto como olvidar que los motres de BD tienen herramientas que nos ayudan mucho en el desarrollo y en la proteccion de la información, ademas en el entity framework esta soportado la utilización de procedimientos almacenados(msdn.microsoft.com/.../bb896279.aspx).
Otro buen articulo...
blogs.microsoft.co.il/.../ado-net-entity-framework-tools-stored-procedures.aspx
@Bruno, en base a esas ideas, por que no usar Entity to Sql, se supone que EF
se diseña entre otras cosas para permitir abstraerse de la base de datos que utilizas,
la sencillez del diseño de consultas en EF con la utilización de parámetros hace que solo en casos
determinados donde quieras sacar verdadero partido a Sql sea necesario el uso de SP, no hay que olvidar
que el uso de SP supone un coste mayor en cuanto al mantenimiento del SP y del código que lo utiliza y crea dependencias sobre la base de datos, si en algun momento quieres migrar esto tendra un alto coste, los SP también son fruto de problemas, tienes que mantener sincronizados el código de sql y de tu aplicación y es fácil olvidarse de cambiar el tamaño o el nombre de cualquier parámetro en los dos sitios.
No sere yo el que desaconseje el uso de SP, de hecho mi aplicación actual usa de forma masiva
SP, tengo mas de 400, se que alguno pondria el grito en el cielo, pero en mi caso comence el proyecto hace ya varios años y EF no era una opción. Entiendo que el artículo de Gisela se refiere a parametrizar consultas para evitar SQL Injection, no al consejo de hacer todo con SP, por eso deje la nota en post.
Es un tema muy interesante para discutir y estoy deacuerdo que muchas decisiones se toman por moda, aunque insisto, si mi aplicación utilizara EF, intentaria reducir mis SP al máximo ya que son muy pocas las situaciones donde la ganancia por rendimiento merezca la pena, y pienso que es importante que todo tu código de acceso a datos se encuentre en una sola capa y sea facil de mantener, algo que muchas veces no tenemos en cuenta.
No voy a entrar en si usar SPs o no... sólo que, que si el motivo de usarlos es OBTENER MAYOR SEGURIDAD, estamos un error. Las consultas parametizadas ofrecen el mismo nivel de seguridad. Asi, pues usar SPs o no puede dar (ha dado y dará :p) para muchas discusiones, pero no creo que la seguridad tenga nada que decir al respecto.
@Bruno
Abstraernos de la BBDD? No creo que la respuesta sea abstraernos para cambiar de SQL Server a Oracle. Yo *quiero* abstraerme de la BBDD, no porque quiera cambiarla, sinó porque NO quiero saber nada de ella: quiero saber de mi modelo de dominio, no de mi modelo de datos. Usar una BBDD és una opción tecnológica que debería condicionarme lo más mínimo. Ahí es donde entran herramientas como EF. :)
¡Buenas a todos!
En primer lugar, muchas gracias a todos por vuestros comentarios. Da gusto cuando un tema da de qué hablar :)
En primer lugar, como bien comenta Eduard, gracias a las consultas parametrizadas conseguimos del mismo modo que con los SPs evitar los ataques de inyección de SQL que era el objetivo principal de este post.
Por otro lado, me gustaría añadir que no soy muy partidaria del uso de SPs. En mi opinión estos deberían usarse lo mínimo posible ya que soy creyente de que la lógica de negocio debería residir en la aplicación y no en la base de datos.
Jesús Bosch, en cuanto al carácter < como bien dices sería necesario omitirlo o denegarlo por temas de inyección de scripts, de lo que me gustaría crear un post sobre algunos tips al respecto también :)
Creo que este tipo de post son necesarios ya que me he dado cuenta de que no todo el mundo tiene en consideración este tipo de cosas :(
Hola Nabolar,
En primer lugar, disculpa la demora ya que he tenido que permanecer desconectada por problemas de salud.
El método Localizable pertenece a <% Html.Telerik().Grid(Model) tal y como muestro en el código de ejemplo.
Buenos días a todos, a ver si me pudieseis ayudar...
Tengo el siguiente codigo y necesito que una de las columnas, venga dada a traves de una consulta a un método, con el código como esta puesto se me muestran todos los titulos de peliculas seguidos y luego el grid con las columnas pertinentes, ¿como hago para meter los datos dentro de la columna? Alguna ayuda?
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
pelisvistas
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<%: ViewData["Message"] %>
<%
Html.Telerik().Grid(Model)
.Filterable()
.Name("video")
.Pageable(settings => settings.PageSize(20))
.Sortable()
.Columns(columns =>
columns.Bound(o => o.id_peli).Title("ID");
columns.Bound(o => o.estado).Title("Estado");
columns.Bound(o => o.descrip).Title("descripcion");
columns.Command(o =>
{%>
<% foreach (var lib in this.Model)
<%= intrahelper.labelpeli("id_peli", (int)lib.id_peli) %>
<%} %>
<%}).Title("pelicula");
columns.Template(o =>
<%: Html.ActionLink("Más", "Details", new { @id = o.id_pfc })%>
<%: Html.ActionLink("Modificar", "Pledit", new { @id = o.id_pfc })%>
<% });
})
.Render();
%>
Muchas Gracias!!
Coñe! Ojalá la hubiese conocido antes... yo me he llegado a despertar por la noche para parar algun deployment :-)
Piensa que además para las demos que suelo hacer cojo una máquina ExtraGrande con 8 cores, y eso significa: preciohora * 8 :-S
¡Hola Lluis!
La verdad es que es muy útil y no eres el único que se ha levantado a las tantas diciendo ¡coñe! ¡El deploy! jeje.
Para realizar las pruebas del post es necesario que Microsoft te incluya en el programa Beta de servicios extras de Azure no?
Buenas Julio,
Para este escenario en concreto no es necesario el programa beta.
A día de hoy, el programa beta es solamente para poder utilizar el tamaño Extra small de las VMs, Azure Connect para la creación de VPNs y el VM Role para poder subir tus propias imagenes de Windows Server 2008 :)
Muy buen post Gisela
¡Muchas gracias Roberto!
Tambien podemos usar bindings directamente para pasar el fichero a la acción:
[HttpPost]
public ActionResult CreateBlob(HttpPostedFileBase newFile){
//Retrieve the file by name
var file = newFile
if (file.ContentLength > 0) {
SaveBlob(file.InputStream);
return RedirectToAction("Index");
Carles
Hola Carles,
Muchas gracias por tu comentario :) La verdad es que me parece una manera más acertada utilizar bindings y la verdad no era consciente de que en este caso se podía hacer :)
Ya he modificado el código.
¡Gracias por tu aportación!
Una de las cosas que Microsoft nos recalca de continuo es que Azure no es un sistema propietario, es decir, que puedes llevarte tus aplicaciones de Azure a un hosting de tu propiedad.
En este caso, si usamos estas entidades ¿existe soporte a ellas fuera de Azure?
Hola Julio,
Buena pregunta :) Windows Azure Storage como tal no existe fuera de la plataforma Azure.
En el caso de las tablas lo único que se me ocurre que se podría hacer sería migrarlas a una base de datos si cambiaras de hosting, pero a día de hoy no existe ninguna herramienta que te de esta opción. Tendrías que crearte una aplicación a medida para hacer la migración automática.
Hola Ana,
Creo que no es posible llamar a un método para generar una columna, pero si es posible llamar a una propiedad. En ese caso tendrías que utilizar esto último para poder devolver los datos necesarios para ese campo.
Perdona por el retraso :(
Interesante!!
Pero sobre que versiones de office podría trabajar tu ejemplo?
Hola rolando,
Si bien este formato se introdujo a partir de Office 2007, podemos hacer uso del mismo en versiones anteriores (Microsoft Office 2000, Office XP y Office 2003) con un pack que salió de compatibilidad. Te adjunto el link por si te fuera de utilidad:
office.microsoft.com/.../microsoft-office-compatibility-pack-for-word-excel-and-powerpoint-2007-file-formats-HA010168676.aspx
A mi me resulta muy cómodo usar Topshelf para la creación de servicios.
- github.com/.../topshelf