none
Mostrar texto con etiquetas html interpretandolo RRS feed

  • Pregunta

  • Hola, en una vista tengo un Editor de Texto WYSISWYG, y este me guarda en la db su contenido con etiquetas html (<p>Contenido</p>), lo que quiero saber, es como, al momento de querer mostrarlo en una Vista, que estas etiquetas se interpreten y vuelvan a tener su estilo.

    Desde  ya gracias.

    viernes, 23 de noviembre de 2018 4:03

Respuestas

Todas las respuestas

  • hola nacho 

    Puedes colocar el código que tienes hasta el momento ? haz tratado de utilizar un con web Browser control?

    viernes, 23 de noviembre de 2018 14:09
  • Hola, si te muestro:

    Tengo esta vista en Articulos:

    @model ASPMVC.CapaLogicaNegocio.Modelos.ModeloArticulos
    @{
        ViewBag.Title = "Crear";
    }
    
    @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()
    
        <div class="form-horizontal">
            <h4>Crear articulo</h4>
            <hr />
            @Html.ValidationSummary(true, "", new { @class = "text-danger" })
            <div class="form-group">
                @Html.LabelFor(model => model.Titulo, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.Titulo, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.Titulo, "", new { @class = "text-danger" })
                </div>
            </div>
            <div class="form-group">
                @Html.LabelFor(model => model.IdCategoria, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.DropDownList("categ", ViewData["cate"] as IEnumerable<SelectListItem>)
                    @Html.ValidationMessageFor(model => model.Titulo, "", new { @class = "text-danger" })
                </div>
            </div>
    
            <div class="form-group">
                @Html.LabelFor(model => model.Contenido, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.TextAreaFor(model => model.Contenido, new { @id = "editor1", @class = "form-control" })
                    <script>
                        CKEDITOR.replace('editor1');
                    </script>
                    @Html.ValidationMessageFor(model => model.Contenido, "", new { @class = "text-danger" })
                </div>
            </div>
    
            <div class="form-group">
                <div class="col-md-offset-2 col-md-10">
                    <input type="submit" value="Crear" class="btn btn-default" />
                </div>
            </div>
        </div>
    }


    Ahi se ve el editor es el CKEDITOR. Este controller

    // GET: Articulo/Create
            public ActionResult Create()
            {
                var cate = new List<ModeloCategorias>();
                foreach (var item in consultaCategorias.ObtenerCategorias())
                {
                    if (item.Activo)
                    {
                        cate.Add(item);
                    }
                }
                var list = new SelectList(cate, "Id", "Titulo");
                ViewData["cate"] = list;
                return View();
            }
    
            // POST: Articulo/Create
            [HttpPost]
            [ValidateInput(false)]
            public ActionResult Create(ModeloArticulos model, int categ)
            {
                try
                {
                    if (ModelState.IsValid == false)
                    {
                        var cate = new List<ModeloCategorias>();
                        foreach (var item in consultaCategorias.ObtenerCategorias())
                        {
                            if (item.Activo)
                            {
                                cate.Add(item);
                            }
                        }
                        var list = new SelectList(cate, "Id", "Titulo");
                        ViewData["cate"] = list;
                        return View(model);
                    }
                    model.IdCategoria = categ;
                    model.FechaCreacion = DateTime.Today;
                    model.Activo = true;
    
                    var realizado = consultasArticulos.AgregarArticulo(model);
                    return RedirectToAction("Index");
                }
                catch (Exception ex)
                {
                    return View(ex);
                }
            }

    Y asi se guarda en la DB:

    public bool AgregarArticulo(ModeloArticulos modelArticulo)
            {
                SumarArtCat(modelArticulo);
                using (var nuevoArt = new ConsToolsEntities())
                {
                    nuevoArt.Articulo.Add(ConvertirADB(modelArticulo));
                    nuevoArt.SaveChanges();
                    return true;
                }
            }

    Y en la db se guarda como texo plano, es decir se ven sus etiquetas, rutas de imagenes, etc. Lo que quiero es si hay algun control que me permita convertir ese texto plano a texto con estilos.


    • Editado Nacho Sa viernes, 23 de noviembre de 2018 20:57
    viernes, 23 de noviembre de 2018 20:56
  • Hola. Puedes usar el helper HtmlHelper.Raw Method

    En tu vista pondrías algo como 

    @Html.Raw(@model.Content)

     

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    viernes, 23 de noviembre de 2018 21:28
    Moderador