Infragistics Html Editor y el Encode/Decode.

Como he perdido un ratito largo con el Html Editor de Infragistics, voy a comentarlo por aquí y así me sirve de recordatorio.

En un proyecto MVC he añadido a la vista el controlito para poder editar texto en negrita, cursiva, etc. y luego guárdalo en la base de datos en formato HTML.

Pero claro, al principio me sorprende que lo que le llega al controlador cuando grabo en la vista está completamente “encode”, algo similar a “%3Cp%3Ei.%20listado%3C/p%3E!” y claro, esto no me vale para nada, vaya!, que lo que yo necesito es el HTML del texto que he escrito.

Ahora está claro, pero al principio no lo veía. Por cosas de seguridad completamente normales, el texto “viaja” así entre cliente y servidor (normal) y luego cuando llega al controlador, pues solo hay que “decode”.

Nada, una chorrada pero que si te pilla con el “celebro” saturado, pues no caes.

 

Fuente: http://igniteui.com/html-editor/aspnet-mvc-helper

http://www.infragistics.com/community/forums/p/80851/434201.aspx#434201

Anuncios

Actualizar propiedad del ViewModel (y oculta en la View) con otro elemento visible.

Imaginemos que utilizamos un editor HTML que hemos encontrado por internet, este editor nos permite escribir código HTML.

Ahora bien, aquí no podemos usar un HtmlHelper en la vista para editar la propiedad que hará referencia al contenido de este editor, por lo que la solución es poner nuestra propiedad del viewModel: “Contenido” como oculta, y posteriormente actualizarla con el contenido del editor de HTML. De ese modo, al hacer el POST, nuestro controlador ya tendrá el valor de la propiedad con el texto que hayamos metido en el editor.

submit1: botón

editor1: widget que nos permite editar código HTML

Contenido: propiedad del viewmodel que debe almacenar el texto HTML editado

 

VISTA:

(Elemento oculto del modelo)

@Html.HiddenFor(x=>x.Contenido)

(Actualizo el elemento oculto con el valor de otro que sí es editable)

 

$(document).ready(function
()
{

$(“#submit1”).click(function
()
{


var texto = $(“#editor1”).html();

 

$(“#Contenido”).val(texto);

 


});


});

 

Ahora desde el controlador ya puedo leer el valor actualizado de “Contenido”.

Cómo añadir el ID a una fila en Infragistics igGrid con ASP.NET MVC

Al añadir una fila en la rejilla, el igGrid tiene formas de poder calcular el nuevo Id de la fila mediante propiedades y eventos en jQuery, pero cuando este Id, viene dado desde el controlador, hay que hacer un pequeño “invento”.

Es sencillo, pero hay que saberlo. El controlador debe pasarle a la vista los nuevos Ids mediante Json, y ya en la vista, un evento del igGrid se encargará de actualizar el Id de la nueva fila.

Sería algo parecido a:

CONTROLADOR:

public ActionResult SaveProducts()

 

{

 

GridModel m = new GridModel();

 

List<Transaction<Product>> transactions = m.LoadTransactions<Product>(HttpContext.Request.Form[“ig_transactions”]);

 

List<Ids> ids = new List<Ids>();

 

int newId = 0;

 

foreach (Transaction<Product> t in transactions)

 

{

 

if (t.type == “newrow”)

 

{

 

// repository Add mehtod returns the new id generated from the underlying data source

 

newId = productsRepository.Add(t.row);

 

ids.Add(new Ids() { OldId = t.row.ProductID, NewId = newId });

 

}

 

}

 

JsonResult result = new JsonResult();

 

Dictionary<string, object> response = new Dictionary<string, object>();

 

response.Add(“Success”, true);

 

response.Add(“ids”, ids);

 

result.Data = response;

 

return result;

 

}

========================

VISTA:

=======================

$.ig.loader(function () {

 

$(“#grid1”).data(“igGrid”).dataSource._addChangesSuccessHandler(function (data) {

 

var i;

 

for (i = 0; i < data.ids.length; i++) {

 

$(“#grid1”).igGridUpdating(“setCellValue”, data.ids[i].OldId, “ProductID”, data.ids[i].NewId);

$(“#grid1 > tbody > tr[data-id='” + data.ids[i].OldId + “‘]”).attr(“data-id”, data.ids[i].NewId);

}

 

$(“#grid1”).data(“igGrid”).dataSource.commit();

 

$(“#grid1”).data(“igGrid”).dataSource.allTransactions().length = 0;

});

 

});

 

 

Fuente: http://www.infragistics.com/community/forums/p/84192/420302.aspx#420302