AJAX POST ERROR 500

Hoy he tenido un problema al hacer POST con jQuery en ASP.NET MVC.

En principio pensé que el problema se daba por el tamaño de los datos que enviaba al servidor, así que probé con:


<security>

<requestFiltering>

<requestLimits maxAllowedContentLength=”100000000″ />

</requestFiltering>

</security>

Pero seguía dando el error 500.

Al final se me encendió la bombilla. Y otra vez a vueltas con el ENCODE/DECODE.

El jQuery finalmente quedó así:

$(‘#id-desmarcar’).on(‘click’,
function()
{

 


var dataview = $(“#grid1”).data(“igGrid”).dataSource.dataView();

 


var jsondata = encodeURIComponent(JSON.stringify(dataview));


var url =
@Url.Action(“DesMarcar”, “Proyecto”);

 

$.post(url,
{ dataView: jsondata },
function(data)
{


if
(data)

location.reload();


});


});

 

Lo importante fue poner el encodeURIComponent
y luego en el CONTROLLER hacer el DECODE del parámetro con Server.UrlDecode.

J

Anuncios

Error “Multiple items passed into Microsoft.Build.Framework.ITaskItem” al compilar/publicar.

Hoy al intentar publicar un proyecto me he encontrado con este error. Al desmarcar la seguridad de ClickOnce en las propiedades del proyecto, el error desaparece, pero al publicar, se vuelve a marcar y vuelve a dar el error.

Tras googlear un rato, no he encontrado nada, así que se me ha ocurrido pensar que el problema estaba en que no había metido en el proyecto todas las referencias que al publicar aparecen como “Include (Auto)”. Es decir, referencias que se añaden porque las referencias que sí he añadido, añaden a su vez a las que necesitan, aunque no estén físicamente referenciadas.

Así que nada, he añadido todas, pero la que estaba dando el error en mi caso era la de “Microsoft.Practices.ServiceLocation”. Al añadirla el error desaparece.

Solucionado!

🙂

 

Clonar objetos CodeFirst en Entity Framework 5 o superior

Anteriormente a la versión 5 del EF, clonar objetos era no complejo, pero necesitaba código, podíamos hacerlo del modo manual, es decir, recorrer el objeto y sus dependencias e ir creando los nuevos, podíamos usar “serialization” o podíamos usar “reflection”.

Ahora es sumamente sencillo, tan solo hay que cargar el objeto a clonar utilizando el método “AsNoTracking” junto al “Include” si queremos cargar las dependencias y añadir el clon al contexto.

Genial!

 

Infragistics error exporting to PDF in Windows Azure

Tras 2 meses!!! con un problema grave en el “reporting” de Infragistics en una aplicación web alojada en un Windows Azure como servicio web (no en una máquina virtual Azure), el soporte técnico ha podido darme una solución que reproduzco aquí para el que tenga el mismo problema: básicamente, cuando exportamos un informe a PDF o XPS aparece el error “An error occurred while exporting the report”, sin embargo, al exportar a Excel, funciona correctamente.

SOLUCIÓN:

It appears that  in order to be able to export to PDF in Azure, an extra configuration is needed.

Azure environments do not have access to system fonts but they’re needed in order to print to PDF ,so it is necessary to include any used fonts into the project.

 

You can find a detailed explanation on how to dynamically load a specific font from the “Font Loader” section of the following document:

http://dl.infragistics.com/community/Reporting/ReleaseNotes/SRNovember2013/Reporting_ReleaseNotes_13.1.20131.1058_EN.pdf

In the example and additional class is added: “MyFontLoader” in order to add the Verdana Font, which is used for the report.

[FontLoader]
public class MyFontLoader: IFontLoader
{
public bool TryGetExternalEmbeddedFonts(string fontFamily, ref FontWeight fontWeight, ref FontStyle fontStyle, out byte[] data)
{
const string verdana = “inubol.Web.verdana.ttf”;
const string verdanaBold = “inubol.Web.verdanab.ttf”;

if (fontFamily == “Verdana”)
{
var fontName = (fontWeight == FontWeight.Bold) ? verdanaBold : verdana;
var assembly = Assembly.GetExecutingAssembly();

using (var stream = assembly.GetManifestResourceStream(fontName))
{
var bytes = GetBytes(stream);
data = bytes;
}

return true;
}

data = new byte[0];
return false;
}

private static byte[] GetBytes(Stream stream)
{
using (var memoryStream = new MemoryStream())
{
stream.CopyTo(memoryStream);
return memoryStream.ToArray();
}
}
}

 

En el proyecto se han de añadir la fuentes (verdana.ttf y vernadab.ttf) como “embeded resource”

 

2 meses de espera para la solución!!

🙂

 

jQuery dynamically generated content – clicks not working

Hoy se me ha dado un caso curioso, “curioso” por ser desconocedor claro está.

Tengo dos botones que al hacer “click”, abrían una ventana modal. Un botón iba bien, el segundo no. La diferencia es que el código del segundo se generaba de forma dinámica.

La solución pasa por cambiar el código de tipo:

$(“.my_Class”).on(‘click’ , function() {

alert(“NO Works”);

});

 

Por este otro:

$(document).on("click", ".my_Class", function (e) {

        alert("Works Fine");

    });

 

This works fine with every element Static or Dynamic and less browser dependency

 

J

 

SQL Server Bitwise operators store multiple values in one column

Imaginemos que un “contrato” tiene un estado, y también varios de ellos al mismo tiempo.

De este modo tenemos:

public
enum
EnumEstado : byte { Ninguno = 0, Pendiente = 1, Entregado = 2, Aceptado = 4, Rechazado = 8, Facturado = 16}

 

En la base de datos tendremos un campo en el que si el estado del contrato es “entregado” y “aceptado”, tendrá el valor 2+4=6

 

Y ahora viene la duda, ¿cómo podemos hacer un SELECT para encontrar los contratos que estén solo aceptados si en la base de datos tenemos el valor 6 y el estado “aceptado” es 4?

 

Select *
from contrato

where ((contrato.estado & 4)=4)

 

J