Hace un par de días, ante el asombro de los presentes, Fred Swarm (cloud manager para la región EMEA) anunció la próxima apertura de Adzure, la edición gratuita del servicio Windows Azure soportada por publicidad.
Publicado por José M. Aguilar a las 1:31 a. m.
Etiquetas: azure, inocentadas, novedades, servicios on-line
.Net
- Mono in 2011
Miguel de Icaza
Asp.net
- How to combine a Worker Role with a MVC4 Web Role into a single instance
Liam Cavanagh - ASP.NET MVC + Selenium + IISExpress
Stephen Walther - Model Binding with Dropdown List in ASP.NET 4.5
Abhijit Jana - Knockout 2.0.0 released
Steve Sanderson - Free eBook: OWASP Top 10 for .NET developers
Troy Hunt - Solving Duplicate Content with Distinct URLs Issue in ASP.NET MVC
Imran Baloch's - New Request validation features in ASP.Net 4.5
K. G. Sreeju Nair - Using CORS to access ASP.NET services across domains
Dave Ward - HttpRequestBase vs HttpRequest
Eduard Tomás - Debugging Application_Start and Module Initialization with IIS and Visual Studio
Rick Strahl - Rotate an ASP.NET Image Control using HTML 5 Canvas
Suprotim Agarwal - Retoques a MVC y Razor para proyectos grandes–Una recomendación
Lucas Ontivero - High-Performance ASP.NET Caching
Peter Vogel - Microsoft blogging platform gains 33% performance boost after adopting RequestReduce
Matt Wrocks
Azure / Cloud
- Azure Monitor for Windows Phone 7 is out!
Ibon Landa - Libro gratuito sobre Windows Azure (Parte IV): Diseño y herramientas
CampusMVP - SQL Azure Q4 2011 Service Release
Ibon Landa
Data access
- MongoDB Best Practices
Inés Sombra - Inserciones masivas en SQL Server CE vs SQL Server vs MongoDb (y II)
Josué Yeray - Raven DB VI, La hora de las consultas…
Unai Zorrilla
Html/Css/Javascript
- JavaScript as a First Language
John Resig - The output element in HTML5
Richard Clark - Excssive, herramienta online para comprimir archivos CSS
Zach Will (Vía desarrolloweb.com) - Meet the CSS4 selectors
Catalin Rosu - JavaScript for C# developers: calling functions and the ‘this’ variable
Julian M. Bucknall - Top 10 “Must Follow” JavaScript Best Practices
Salman Siddiqui - Online Javascript Compression Tool
BrightBit - The rise and rise of JavaScript
Dan North - Using the JavaScript Prototype Property to Structure and Extend Code
Dan Wahlin's - Multiple Attribute Values
Chris Coyier - The Seven Deadly Sins Of JavaScript Implementation
Christian Heilmann (vía @alegrebandolero)
Visual Studio/Complementos
- C# + ReSharper = Awesome: Tip #5 – Replace Constructor with Factory Method
Alvin Ashcraft - ReSharper 6.1, dotCover 1.2 and dotTrace 4.5.2 Performance Released
Hadi Hariri - C# + ReSharper = Awesome: Tip #4 – Convert Abstract Class to Interface
Alvin Ashcraft - C# + ReSharper = Awesome: Tip #3 – Convert Into LINQ Expression
Alvin Ashcraft
Publicado en Variable not found
Y ya de paso, desearos también que el próximo año 2012 venga cargado de alegrías, prosperidad y nada más que cosas buenas. Al menos a ver si es para todos un pelín mejor de lo que ha sido el año que ahora cerramos ;-)
Nos seguimos viendo por aquí.
Sin embargo, no es este el único mecanismo de extensión del framework a este respecto: también podemos crear fácilmente nuevos atributos que aporten información extra de metadatos a las clases y propiedades del Modelo. Y esta es la razón de ser del interfaz
IMetadataAware
.Aprovecho además para pediros opinión sobre un nuevo formato de presentación de los enlaces, usando categorizaciones. De esta forma podréis acceder directamente a aquellos cuya temática os interese, en lugar de tener que leerlos todos para ver si hay alguno que al que valga la pena echar el vistazo. ¿Qué os parece? ¿Mejor así?
.Net
- Formatting Enumeration Constants
BlackWasp - Install-Package Roslyn
Kirill Osenkov - Return Multiple Values from Methods with Tuples
Peter Vogel - C# Fundamentals: Returning Zero or One Item As IEnumerable<T>
James Michael Hare - .Net Reflector y ILSpy, ¿podrían inferir mejor el código a partir del IL?
Lucas Ontivero
Asp.net
- [Video] ASP.NET vNext - Filtrado de datos - Value Provider Attributes
Luis Ruiz - How to use SignalR and Knockout in an ASP.NET MVC 3 web application to handle real-time UX updates
Justin Schwartzenberger - MVC and HTML5 Web Workers
Dean hume - Introducing SignalR.EventStream
Ben Dornis - Update jqGrid Html helper for ASP.NET MVC
Robin van der Knaap - Implement secure ASP.NET MVC applications
Jovan Popovic - Which is the Fastest Webserver? Apache, IIS, Nginx, LightHttpd or G-Wan?
WebPerformance (vía @campusmvp) - OWASP Top 10 for .NET developers part 10: Unvalidated Redirects and Forwards
Troy Hunt - Espresso Tip: IHttpHandler and IsReusable
David Neal - Introducción a less
Sergio León - Automatically trim html controls in a asp.net mvc project
Richard Wilde - On deploying ASP.NET MVC site as a desktop application
Andrei Marukovich - Todo sobre AutoEventWireUp en páginas ASP.NET Web Forms
José Manuel Alarcón - Using QUnit with Razor Layouts
Phil Haack - ASP.NET MVC ViewModel usage and pick your best pattern
Kazi Manzur Rashid - MVC Route/URL Generation Unit Tester
Codeplex - Easy URL rewriting in ASP.NET 4.0 web forms
Jalpesh Vadgama - Looking into Web performance in ASP.Net applications
Nikolaos Kantzelis - [Vídeo] ASP.NET vNext - Selección de datos (SelectMethod)
Luis Ruiz - Using SignalR to broadcast a slide deck
Marteen Balliauw
Azure / Cloud
- Utilizar Windows Azure AppFabric Caching como session provider
Gisela Torres - VMware Cloud Foundry cloud platform now supports .Net
Mary-Joe Foley - Now Available: SQL Azure Q4 2011 Service Release
Azure Team (vía @ibonilm) - The SQL Azure Team Unveils a New Server Management UI
Roger Jennings - Differences Between the Storage Emulator and Windows Azure Storage Services
MSDN
Conceptos
- Algorithms Course Materials
Jeff Erickson - Hash Functions
Bret Mulvey
Data access
- RavenDB (IV) La identidad de los documentos
Unai Zorrilla - Data Access Performance Comparison in .NET
Luis Rocha
Html/Css/Javascript
- 10 Best jQuery Form Plugins
jQuery4u - Your jQuery: Now With 67% Less Suck
Scott Kosman - JavaScript – Add Commas To Number
Shai Raiten - Frontend SPOF
Steve Souders - The 30 Most Effective jQuery Plugins
Awcore - Animations in HTML5
Florian Rappl - HTML 5 Input Types - How useful is this really going to be?
Rick Strahl - The CSS profilers are coming!
Lennart Schoors - A Key Code Checker for DOM Keyboard Events
Rick Strahl
Visual Studio/Complementos
- [HowTo] Agregar Ficheros a un Proyecto Existente
Javier Torrecilla - C# + ReSharper = Awesome: Tip #2 – Create Field
Alvin Ashcraft - NuGet 1.6 Release Notes
Nuget Team - [How To] Agregar un elemento de menú a Visual Studio.
Javier Torrecilla - Go To Definition for JavaScript Functions in Visual Studio 2011
Abhijit Jana - Introducing CSSCop - FxCop for stylesheets
Mads Kristensen
Otros
- La fruta más alta siempre sabe mejor
José Manuel Alarcón
Publicado en Variable not found
En este WebCast veremos una introducción a la inyección de dependencias en ASP.NET con ejemplos prácticos:Como siempre, se trata de un Webcast de asistencia es gratuita al que podéis registraros a través de la siguiente dirección:
- ¿Qué es la inyección de dependencias?
- ¿Que nos aporta?
- Patrones y anti-patrones.
- ¿Dónde se construye el grafo?
- Tiempo de vida de las dependencias.
- Contenedores de dependencias (IoC Containers)
- ¿Cómo se aplica todo esto en ASP.NET?
Ponente: Luis Ruiz Pavón (Spenta - Beezy) - miembro y fundador de AUGES (www.auges.org) y uno de los grandes colaboradores de la comunidad de desarrolladores. Puedes seguirlo a través de su blog técnico (www.luisruizpavon.com) y de Twitter (@luisruizpavon).
https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032499034&Culture=es-ES
En resumen, se trata de un evento que no deberíais perderos si queréis construir aplicaciones y componentes ASP.NET mejor estructurados, flexibles, desacoplados, muy mantenibles y fáciles de probar usando pruebas unitarias.
Esperamos veros por allí ;-)
Publicado en Variable not found.
Y uno de estos casos es un detallito muy simple pero útil: establecer el foco de edición en un control concreto al cargar una página. En Webforms era suficiente con asignar al atributo
defaultFocus
del tag <form>
el nombre del control que nos interesara, y ya lo teníamos solucionado; ASP.NET MVC no trae ninguna solución “de serie” para conseguirlo, aunque, como veremos en este post, no es mucho más complicado que la alternativa Webforms una vez hemos preparado la infraestructura necesaria.Blogger invitado
Óscar Sotorrío Sánchez
Desarrollador independiente, MCP C#
Eterno aprendiz en esto de las tecnologías .NET y en especial con ASP.NET. Admirador de la filosofía de Internet y entusiasta de los nuevos modelos de negocio que rigen este mundillo.Blog: oscarsotorrio.com
- ASP.NET MVC Routing Extensibility
Simone Chiaretta - That “JavaScript not available” case
Christian Heilmann - jQuery 1.7 Visual Cheat Sheet
Antonio Lupetti - Set the AsyncTimeout attribute for your async controllers
Simone Chiaretta - Providing Intellisense, Navigation and more for Custom Helpers in ASP.NET MVC
Hadi Hariri - QUnit layout for JavaScript testing in ASP.net MVC3
Jonathan Creamer - HTML5 Form features you should know
Bipin Joshi - Usar el atributo Obsolete (.NET: ObsoleteAttribute Class)
Sergio Tarrillo - Como crear un Profiler para .Net
Lucas Ontivero - [Windows Phone 7.5] Inserciones masivas en SQL Server CE vs SQL Server vs MongoDb
Josué Yeray - Public Service Announcement: Careful With Your Nested Border-Radii
Chris Coyier - Understanding CSS’s vertical-align Property
Louis Lazaris - Inside ASP.NET MVC: Instantiation of Controller
Alexander Beletsky - What's the difference? Remainder vs Modulus
Eric Lippert - Avoid “Duplicate Content” with IIS7 – Domain with or without www
Code Inside Team - Lateral On-Scroll Sliding with jQuery
Mary Lou - New NuGet.org Deployed!
Phil Haack - Custom Validation in ASP.NET MVC 3 using DataAnnotationsModelValidator
Mahesh Sabnis - Búsquedas de Texto con MongoDB y VB.NET ASP.NET Webform
Gonzalo Pérez - Obtaining a MAC Address
BlackWasp - [Vídeo] ASP.NET vNext - Instalando paquetes con Nuget
Luis Ruiz - Trabajando con Singleton utilizando UNITY
Bruno Capuano - [Vídeo] ASP.NET vNext - Strongly Typed Data Controls
Luis Ruiz - RavenDB II: Los documentos
Unai Zorrilla - Lucene.net 2.9.4 is out, now with NuGet
Simone Chiaretta - Mejoras del editor de CSS en Visual Studio
Scott Guthrie (traducido por Juan Laó) - Getting a Base Exception
BlackWasp - RavenDB I: Empezamos
Unai Zorrilla
Publicado en Variable not found
- Vídeo: ASP.NET vNext - Smart Tasks y generación de eventos de controles desde la vista HTML
Luis Ruiz - Tutorial MongoDB con ASP.NET MVC - Ejemplo Práctico
Gonzalo Pérez - 5 jQuery Infinite Scrolling Demos
jQuery4u (vía @etnassoft) - Disponible una nueva entrega del libro GRATUITO de Azure : AppFabric y WIF
Vía @ibonilm - Generador de CSS3
Vía @boagworld - Why Many Developers Hate ASP.NET… and Why They’re Wrong
Jeremy McPeak - Scott Hanselman's 2011 Ultimate Developer and Power Users Tool List for Windows
Scott Hanselman - Building a Windows Azure App using Azure Queue, Azure Table and ASP.NET MVC Web Role
Shiju Varghese - ASP.NET MVC Controls Toolkit 1.5.5 released and available to download
Vía @campusmvp - New ASP.NET website launched
Scott Hanselman - Unobtrusive jQuery UI with AJAX support
Andy Cohen - 25 Amazing HTML5 Tricks and How to Make Them
DevStand - The Script Tag
Chris Coyier - Global HandleErrorAttribute in ASP.net MVC3
Jonathan Creamer - De vuelta a lo básico, codificar html, javascript y url
Sergio León - Web API preview 6 is out: how to get a RESTful mind
Simone Chiaretta - jQuery Time Entry with Time Navigation Keys
Rick Strahl - EF Migrations, EF 4.3 y que nos deparará el futuro
Unai Zorrilla - Code First Migrations: Beta 1 Released
ADO.NET Team - La cuarta preview the IE10
Juan Laó - The craziest Javascript implementations
Vía @etnassoft - Custom Action Method Selector in MVC
Jigar Bagadai - HTML5 for Applications: The Fourth IE10 Platform Preview
IEBlog - Entity Framework Batch Update and Future Queries
Paul Welter (vía @osotorrio) - Vistas y View Engines en ASP.NET MVC
Marc Rubiño - Techniques for real-time client-server communication on the web (SignalR to the rescue)
Maarten Balliauw - Uso de IDisposable
Juan Laó - AppFabric Service Bus Test Client
Ibon Landa - Storage Queues vs Service Bus queues
Ibon Landa - Relayed Messaging y Brokered Messaging
Ibon Landa - ¿Y si todo lo que haces llevara tu nombre grabado?
José Manuel Alarcón - How To Write a Plugin in jQuery
Shakeel Iqbal - Google Maps API V3 for ASP.NET
S V Sai Chandra (vía @osotorrio) - Phil Haack deja Microsoft
Phil Haack - Writing a Fluent ASP.NET MVC Recursive TreeView Helper
Matt Hidinger - CSS Editor Hierarchical Indentation in Visual Studio 2011 Developer Preview
Abhijit Jana - Task Cancellation
BlackWasp - Añadir dlls en la GAC de las máquinas de Windows Azure
Gisela Torres - Composing Entity Framework Fluent Configurations
K. Scott Allen - Nuevo soporte de Empaquetado y Minificación (ASP.NET 4.5)
Juan Laó - New Bundling and Minification Support (ASP.NET 4.5 Series)
Scott Guthrie (traducido por Juan Laó) - Razor Donut Caching
Phil Haack
Publicado en Variable not found
Sin embargo, los atributos en el propio código de la clase no son la única vía para especificar metadatos en el framework. En este post veremos cómo extender el framework para crear nuevas vías para especificar esta información.
- C#/.NET Little Wonders: The Predicate, Comparison, and Converter Generic Delegates
James Michael - MVC Data URI HTML Helper
Dean Hume - Lazy Remote Validation with ASP.NET MVC 3
Pietro Brambati (vía @osotorrio) - Download Free eBook: Razor View Engine in MVC 3
Abhimanyu Kumar Vatsa (vía @lluisfranco) - Adding Personality with CSS3 Transitions and Animations
IEBlog - Modernizr.js: Polyfills
K. Scott Allen - Associations in EF 4.1 Code First
Morteza Manavi (vía @osotorrio) - Helpers para formularios (ASP.NET MVC)
Eduard Tomás (vía @JTorrecilla) - Web Platform Installer v4 command line (WebPICMD.exe) Preview Release
WebPICmd Team (Vía @wasat) - Microsoft Translator API
Juan María Laó (vía @lluisfranco) - Coffee delivers jolt deep in the brain
Laura Sanders - Getting Query Parameters in Javascript
Phubar Baz (!) - Contour Analysis for Image Recognition in C#
Greg Duncan - ReSharper Settings in 6.1
Hadi Hariri - Poster: What’s new in .NET Framework 4.5?
Heikniemi Hardcoded - Inserciones Masivas en MongoDB vs SQL Server (IV)
Pablo Doval - DDD: 2- Framework de IoC (Service Pack 1)
Omar del Valle - El nuevo objeto jQuery $.Callbacks()
Carlos Benítez - jQuery 1.7.1. released
jQuery Team - Crear un archivo .ZIP con JavaScript
Pablo Suárez (vía @osotorrio) - HTML5 Semantics
Bruce Lawson - Integrating JavaScript Unit Tests with Visual Studio
Stephen Walther - Embedding RavenDB into an ASP.NET MVC 3 Application
Justin Schwartzenberger - Aclarando CQRS [traducción]
Pablo Núñez & Co. - Task Support for Asynchronous Controllers in MVC 4
Malcolm Sheridan - Fechas UTC, JavaScript, jQuery timeago, templates y otras hierbas
Luis Ruiz Pavón - Saber si un elemento tiene un evento jQuery asignado
Sergio León - Bloquear los botones mientras se envía un formulario
José Manuel Alarcón - Agilismo Vs Modelo waterfall tradicional. Muy interesante y resumidito.
Juan Palacio - Desarrollo de una aplicación Metro en C# y XAML
Eduard Tomás (vía @Jtorrecilla) - Large-scale JavaScript Application Architecture
Addy Osmani - Aggregating RSS Feeds in C# and ASP.NET MVC 3
Wade Wegner - 6 Tips to Help You Build a Great Web Application
Greg & Adrian - Los nuevos métodos jQuery on() y off()
Carlos Benítez - DDD: 2- Framework de IoC (parte 1) y DDD- 2- Framework de IoC (parte 2)
Omar del Valle - HOT:Inserciones masivas en Sql Sersver vs Mongo DB (III)
Unai Zorrilla
Publicado en Variable not found
Sin embargo, como ya teníamos el cuerpo hecho a aprender cosas interesantes la semana que viene, tendremos el placer de contar con el gran Marc Rubiño, MVP en ASP.NET y fundador de LoNetCamp, que nos mostrará el lunes 28 de noviembre a las 19:00h (horario peninsular español) la potencia que aporta la unión de tecnologías como ASP.NET MVC, HTML5, CSS3 y JQuery.
Descripción del evento:
Como siempre, podéis asistir desde casa o el trabajo (es un Webcast online), y la asistencia al evento es totalmente gratuita. Para acceder, simplemente debéis registraros en la siguiente dirección:ASP.NET MVC + HTML5 + CSS3 + Jquery = La unión perfecta
Las aplicaciones web modernas nos exigen cada vez más utilizar estándares para dotar a nuestra aplicación de una vistosidad y usabilidad nunca visto hasta el momento. Con ASP.NET MVC podemos separar las responsabilidades de nuestra aplicación de una forma sencilla y con HTML5 y CSS3 podemos obtener los mejores resultados independientemente del navegador gracias a librerías como modernizr.
En este Webcast lo que veremos es cómo de una forma totalmente práctica y con Visual Studio 2010 podemos crear una aplicación web totalmente funcional.
¿Qué utilizaremos en esta práctica?
ASP.NET MVC v.3: Es una plataforma gratuita, Open Source y está incluida en .NET 4.0. Nos sirve para realizar aplicaciones ASP.NET utilizando el patrón MVC, separando las responsabilidades ofreciéndonos beneficios como desarrollo orientado a pruebas “TDD”, mejor soporte de SEO con URLs más limpias, etc.
HTML v.5: La quinta revisión del veterano HTML no finalizada, pero los navegadores se han lanzado a una lucha frenética para adaptar sus especificaciones. Esta versión ha tenido en cuenta las nuevas necesidades y nos ofrece una web semántica.
CSS3: La tercera revisión de la hoja de estilos en cascada, que nos permite separar la estructura del documento de su presentación.
JQuery: Librería script que encapsula la complejidad de JavaScript y nos permite realizar animaciones, interactuar con el DOM y extender la aplicación de una manera muy sencilla y viene incluido en los proyectos ASP.NET MVC.
Modernizr: Librería que nos permite validar si el navegador soporta alguna de las nuevas funcionalidades de HTML 5 y nos permite actuar en consecuencia. Para hacer nuestra aplicación realmente cross-browser.
Ah, y los que ya teníais la fecha del 29 reservada para disfrutar con un Webcast de categoría, recordaros que ese mismo día podéis encontrar a Lluis Franco, MVP C# y un fenómeno de la naturaleza, hablando sobre programación paralela en SecondNug, a las 19:30h (GMT+1).
Buena semana de eventos tenemos por delante, ¿eh?
Publicado en: Variable not found.
Los mensajes de error asociados a cada validador son almacenados inicialmente en atributos
data-val-*
sobre el control a comprobar, y cuando se detecta un problema de validación, son mostrados copiando su contenido al interior de la etiqueta <span>
que el helper Html.ValidationMessage()
habrá generado sobre la página.Sin embargo, al hilo de una consulta reciente en los foros de ASP.NET MVC en MSDN, perfectamente contestada por el amigo Eduard Tomás, pensé que realmente tenemos poco control sobre cómo se muestran estos errores, así que me he puesto un rato a ver cómo podíamos conseguir introducir lógica personalizada en este punto aprovechando la flexibilidad que ofrece jQuery validate 1.9.
Salvo por la escasez de documentación de este componente, tomar el control en el momento de mostrar los mensajes de error es bastante sencillo. Basta con establecer una función en la propiedad
showErrors
de los settings
del plugin, cosa que podemos hacer con el siguiente script de inicialización:<script type="text/javascript">
$(function () {
var settings = $.data($('form')[0], 'validator').settings;
settings.showErrors = function (errorMap, errorList) {
// Aquí el código personalizado:
[...]
// Y si nos interesa, finalmente podemos
// ejecutar el comportamiento por defecto
this.defaultShowErrors();
};
});
</script>
(Por simplificar, estamos asumiendo que en el formulario hay un único tag <form>
, que es el que capturamos con el selector).La función
showErrors()
recibe dos parámetros. El primero es un “mapa” donde asociamos a cada clave (nombre del campo) el mensaje de error que tenga asociado. Así, por ejemplo, el valor de errorMap.Nombre
será nulo si el campo “Nombre
” del formulario no tiene ningún error (ha validado correctamente), o el texto del error en caso contrario.En el segundo parámetro de la función encontraremos un array con los errores a mostrar. En cada elemento tendremos disponible la propiedad
element
, desde la que podemos acceder al control que ha generado el error, y message
, donde podemos consultar o establecer la descripción del mismo.Es importante tener en cuenta que la función
showErrors()
es invocada con mucha frecuencia durante el proceso de edición (pérdida de foco, obtención de foco, pulsación de teclas…), por lo que desde el punto de vista de la usabilidad no tiene demasiado sentido introducir en ella procesos bloqueantes (como puede ser un alert()
) o demasiado largos en el tiempo, para evitar que se solapen.Por ejemplo, en el siguiente código utilizamos el efecto “highlight” de jQuery UI para resaltar con un rápido destello el elemento en el que se ha detectado un error:
settings.showErrors = function (errorMap, errorList) {
for (var i = 0; i < errorList.length; i++) {
var error = errorList[i];
// error.element es el elemento que ha provocado el error
$(error.element).effect("highlight", { times: 1 }, 100);
}
this.defaultShowErrors();
};
En fin, algo no demasiado útil ;-P, pero interesante en cualquier caso para profundizar un poco en los misterios e interioridades de jQuery validate.Publicado en Variable not found.
Publicado por José M. Aguilar a las 10:33 a. m.
Etiquetas: aspnetmvc, jquery, scripting, trucos, validadores
file
(el que usamos para hacer los uploads) de un formulario, por ejemplo, para evitar que el usuario envíe un archivo que por cualquier motivo no deba ser subido al servidor.O dicho de otra forma, imaginemos la siguiente porción de un formulario en pantalla, que podría ser generada con el código que podéis ver justo a continuación:
<label for="archivo">Archivo a enviar:</label> <input type="file" id="archivo" name="archivo" /> <input type="button" onclick="limpiarInputFile('archivo');" value="Limpiar" />
Y la pregunta en este momento sería, ¿qué código deberíamos implementar en la función
limpiarInputFile()
que estamos utilizando en el evento onclick
si quisiéramos limpiar o inicializar el contenido del campo archivo
?Aunque de forma intuitiva podría parecer que basta con establecer el valor del campo a una cadena vacía, una prueba rápida nos demostrará que esto no es posible. Desde hace ya tiempo, por motivos de seguridad, los navegadores no permiten el acceso de escritura a la propiedad value en los campos de envío de archivos, por lo que nos encontramos una vía sin salida. Esto lo vemos con el siguiente código, utilizando jQuery:
function limpiarInputfile(id) {
var input = $('#' + id);
var nuevoValor = "c:\\windows\\system32\\mspaint.exe";
alert(input.val()); // Muestra "C:\Datos.dat"
input.val(nuevoValor); // Establecemos un nuevo valor
alert(input.val()); // ¡¡Muestra "C:\Datos.dat"!!
}
Como vemos, somos vilmente ignorados cuando intentamos establecerle un valor.
Pues bien, una posible solución consiste en eliminar del DOM el elemento
<input type="file">
y volver a crearlo justo después en el mismo lugar. He visto por ahí varias implementaciones que obligaban a introducir este elemento dentro de un contenedor, pero he creado otra que creo que es más sencilla e igual de efectiva: function limpiarInputfile(id) {
var input = $('#' + id);
var clon = input.clone(); // Creamos un clon del elemento original
input.replaceWith(clon); // Y sustituimos el original por el clon
}
Y eso es todo :-). Observad que lo único que hacemos es crean un clon del elemento original cuyo
value
por supuesto estará en blanco (recordad que esta propiedad no se puede establecer), y justo a continuación eliminamos el elemento original sustituyéndolo por este clon.Si queremos generalizar este código e implementar esta funcionalidad de forma no intrusiva podríamos hacer lo siguiente:
$(function () {
$("input[type=file]").after(
"<input type='button' class='limpiar-inputfile' value='Limpiar'>"
);
$(".limpiar-inputfile").click(function () {
var input = $(this).prev("input[type=file]");
var clon = input.clone();
input.replaceWith(clon);
return false;
});
});
Este código añade automáticamente un botón “Limpiar” a continuación de todos los
<input type=file>
de la página, implementando en el manejador del evento click
la lógica de inicialización del componente que hemos visto antes. De esta forma, sólo se introducirá en la página el botón de limpiado cuando estén activados los scripts, que es en el único momento en que su ejecución tendrá sentido con la solución propuesta.Espero que os sea de utilidad.
Publicado en: Variable not found.
Desde aquí, dar la gracias a la organización y a todos los asistentes que han vuelto a conseguir que este evento sea una experiencia inolvidable.
Y para volver poco a poco a la normalidad, estos son los enlaces publicados en Variable not found en Facebook y Twitter del 7 al 10 de noviembre de 2011. Quizás poquitos en comparación con otras veces, pero espero que os resulten igualmente interesantes. :-)
- Libro gratuito sobre Windows Azure
Ibon Landa - Secure Strings in .NET
Abhishek Goenka - Auto wiring parts in ASP.NET MVC with MEF 2
Per Ökvist - ASP.NET MVC: Converting business objects to select list items
Gunnar Peipman - Need a fake repository in your ASP.NET MVC applications? Try DevMagicMake
Vía @MarteenBalliau - Lazy Loading jQuery Tabs with ASP.NET
Mike Brind - Useful Visual Studio Extension - Web Essentials from Mads Kristensen
Scott Hanselman (vía @osotorrio) - Creating static methods at runtime
Filip Ekbergs - [Webcast] Inyección de Dependencias en ASP.NET
Auges - Exploring JavaScript’s Logical OR Operator
Addy Osmani - Cómo crear código inmantenible (o un modo rastrero de volverse imprescindible)
Juan Botías - ASP.NET MVC3: Incoherencias en el tratamiento de doubles
Eduard Tomás - Glimpse 0.86 Released
Anthony van der Hoorn - Changing Your Website Theme based on the Users Language or Culture
Steven Moseley - C#/.NET Little Wonders: The Generic Action Delegates
James Michael Hare - jQuery 1.7 Released – Event handling in a better, simplified and consolidated way
John Petersen
Publicado en: Variable not found
Required
o StringLength
no las definíamos a nivel de código mediante atributos, sino en el archivo de configuración, lo que podía aportar interesantes ventajas vistas a flexibilizar nuestras soluciones.En este post vamos a ver un nuevo ejemplo de cómo utilizar el mismo mecanismo de proveedores, pero esta vez para conseguir de forma muy sencilla simplificar el código de clases del modelo en las que todas sus propiedades sean por defecto obligatorias, salvo aquellas en las que indiquemos expresamente lo contrario.
- Desplegar aplicación web en Azure en 30 segundos
José Perona - jQuery 1.7 Released
jQuery Team - [Debate] ¿Debería tener C# referencias const?
Eduard Tomás - ¿Cuánto ocupan mis tablas y mis índices en Sql Azure (y no Azure)?
Rodrigo Corral - Del software y sus estimaciones: Los puntos de función
Äntonio (!) - Expanding Text Areas Made Elegant
Neil Jenkins - Better Web Forms with HTML5 Forms
Brandon Satrom - Manage Project Libraries with NuGet
Phil Haack - EF 4.2 Released
ADO.NET Team, vía Juan Carlos González - Visual Studio Async CTP (Version 3) Released
Greg Duncan - HTML5 History in IE10
IEBlog - T4MVC with separate view and controller projects
Geoff Hudick - Inner Fields and Lazy Initialization in C#
Steve Smith - Web Forms Model Binding Part 3: Updating and Validation (ASP.NET 4.5 Series)
Scott Guthrie - .NET Framework 4 Now Supports LocalDB
Abel Avram - Libro gratuito: Eloquent JavaScript: A Modern Introduction to Programming
Marijn Haverbeke - NuGet Package of Week #11 - ImageResizer enables clean, clear image resizing in ASP.NET
Scott Hanselman - Consultas para mejorar el rendimiento de tu SQL Azure (y no Azure)
Rodrigo Corral - Create a custom property for tagging content
Brickpile - ASP.NET MVC with PAjax or PushState/ReplaceState and Ajax
Kazi Manzur Rashid - Sharing session between ASP Classic and ASP.NET using ASP.NET Session state server
Li Chen - Tres monos, diez minutos
José Manuel Alarcón - Donut Hole Caching In ASP.NET MVC by Using Child Actions and OutputCacheAttribute
Tugberk Ugurlu
Publicado en: Variable not found
- Lessons From A Review Of JavaScript Code
Addy Osmani (Vía @Etnassoft) - Top Ten Idea Killers in Software Development
Navneeth Mandavilli - Unity 3.0 for .NET4.5 Preview
Microsoft Patterns & Practices - Javascript in the small
Ola Bini - C#/.NET Little Wonders: The Complete Collection
James Michael - C# As A Scripting Language In Your .NET Applications using Roslyn
Anoop Madhusudanan - Uso de POST en ASP.NET MVC
Eduard Tomás - Curso de programación con HTML5, CSS3 y JavaScript (I) en DNM+
DNN+, vía Marc Rubiño - Exposing the C# and VB compiler’s code analysis
MSDN, vía Jorge Serrano - Additional HTTP status codes
IETF - Windows Azure: Startup task or OnStart(), which to choose?
Avkash Chauhan - Using HTML5 input types in ASP.NET
Bipin Joshi, vía Óscar Sotorrío - Patterns/Antipatterns/UML/Refactoring
Source Making - Moving to Azure: Worker Roles for Nothing and Tasks for Free
Michael C. Neel - Demystifying jQuery 1.7′s $.Callbacks
Addy Osmani - You have blank page when you run an asp.net mvc site in Azure Compute emulator
Nicolas Humann - Roslyn CTP is available
Patrick Smacchia - Regular Expressions with Timeout in .NET 4.5
Abhishek Sur - Coordinating multiple ajax requests with jquery.when
Joshua Flanagan
Publicado en: Variable not found
Este libro, escrito en el año 1987 por Geoffrey James, recoge, en un humorístico tono de misticismo oriental, distintas historias y parábolas con geniales mensajes de fondo sobre calidad en la programación, gestión de proyectos y otros temas que siguen siendo válidos veinticinco años después.
Como probablemente habrá más lectores que no lo conozcan, me ha parecido interesante reproducirlo aquí traducido en su totalidad, por supuesto contando previamente con el permiso expreso del Sr. James.
¡Que aproveche!
Warning: Post largo. Muy largo ;-)
Publicado por José M. Aguilar a las 9:17 a. m.
Etiquetas: curiosidades, frikadas, humor, programación, proyectos
- ASP.NET MVC: Enlazar una propiedad a jQuery UI Slider
Eduard Tomás - Avoiding MvcBuildViews build time impact in developers environment by using ASP.NET compiler as an external tool
Luis Rocha - Impresionante! Avances en holografías: el HoloDesk de Microsoft
Microsiervos
[HowTo] Modificar cadena de conexión, la eterna pregunta
Lluis Franco - Optimizing Long Lists Of Yes/No Values With JavaScript
Lea Verou - Microsoft Codename “Data Explorer” Walkthrough
Data Explorer Team - Comprimir y descomprimir ficheros (II)
Javier Torrecilla - Detectando DEBUG en código y en Razor
Pablo Núñez - Using Roslyn to implement an MVC Razor view engine
David Ebbo - Today we are releasing the first Community Technology Preview of the Roslyn Project!
Visual Studio Blog - Implementing an Authorization Attribute for WCF Web API
Phil Haack - How We Talk about EF and its Future Versions
ADO.NET Team blog - Never Mind the Controller, Here is the Orchestrator
Dino Esposito - Finding Clone Codes in Visual Studio 2011 Developer Preview
Abhijit - Azure Blob Storage – a simple example
Peter von Lochow - How to Deploy Your ASP.NET MVC 3 with SQL CE 4.0 & Entity Framework
Christian D. Yellington - Find out the Geo-coordinates of an address – geocoding with Google Maps
Code Inside Team - Using ASP.NET MVC 3 to Build Ajax Form with JQuery Validation
Christian D. Yellington - Obtaining Results from Parallel Tasks
Black Wasp - [Testing] Pruebas de acoplamiento
Luis Ruiz - Prevent ASP.NET cookies from being sent on every css, js, image request
Omar Al Zabir - CQRS, Commands, Command Handlers and Command Dispatcher
Shiju Varghese's - Improve the YSlow score - remove the ETags
Mark Monster - El señor de las moscas: interfaces al cerebro
José Manuel Alarcón - The Dangers of Implementing Recurring Background Tasks In ASP.NET
Phil Haack - ASP.NET MVC, Random Sign-offs and TempData Loss DevDirective
Publicado en: Variable not found
Para empezar, tendremos aquí a José Manuel Alarcón, del que poco se puede decir que no conozcáis ya: Ingeniero industrial, Microsoft MVP desde el año 2004, Director de Krasis, autor de cientos de artículos, varios libros, ponente en decenas de conferencias y charlas … vaya, uno de los grandes :-)
Y el tema elegido es de vital importancia para todos los que trabajamos en la web: la seguridad.
Programar es mucho más que la simple creación de aplicaciones que cumplen con la funcionalidad para la que fueron diseñadas. Existen otras muchas consideraciones que hacer y multitud de características tan importantes como la propia funcionalidad que se deben tener en cuenta: rendimiento, extensibilidad, facilidad de mantenimiento, etc... entre las que destaca especialmente la seguridad del código que se escribePor supuesto, podéis asistir desde casa o el trabajo (es un Webcast online), y la asistencia al evento es totalmente gratuita. Para acceder, simplemente debéis registraros en la siguiente dirección:
De poco o de nada sirve una aplicación que lleva a cabo su cometido principal pero que permite que casi cualquiera pueda acceder a la información que supuestamente protege o que, debido a la escritura de código descuidado, un competidor desleal impide su funcionamiento cuando más se necesita.
Y no, no llega con tener un buen cortafuegos si el fallo está en la lógica de la aplicación.
En esta charla se analizarán los principales puntos flojos de seguridad que suele haber en las aplicaciones Web ASP.NET, y se enseñará cómo evitarlos. Entre otros temas se tratarán la correcta configuración de IIS, la autenticación y autorización hechas correctamente, la suplantación de usuarios del sistema, las inyecciones de SQL, las secuencias de comandos entre sitios (XSS), los problemas de canonicalización, los ataques Cross Site Request Forgery (CSRF)...
https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032497158&Culture=es-ES
Publicado en: Variable not found.