es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

En MVC 5, devolver una vista con un nombre específico está devolviendo toda la página dentro de una etiqueta
.
							

Por favor, ten paciencia, han pasado años desde que usé MVC, así que estoy bastante oxidado. Pero juro que esto solía funcionar. Tengo una vista que utiliza una página de diseño. La página de diseño tiene un par de formas dentro, en caso de que importe.

La vista Body contiene una cuadrícula y algunos datos accesorios. En el evento de clic de la cuadrícula, uso JavaScript para enviar el formulario que está dentro del body.

Rastreando el código del controlador, todo parece estar bien, el modelo se ve bien dentro del código, pero se renderiza en el cliente dentro de una etiqueta pre.

No puedo, por nada del mundo, entender qué estoy haciendo mal, y mis búsquedas no están dando resultados relevantes. Cualquier ayuda sería muy apreciada. Estoy haciendo un hoyo poco a poco en mi escritorio al golpear mi cabeza contra él.

He recortado mucha basura de formato. Espero que no sea relevante; tengo la sospecha de que estoy haciendo algo fundamentalmente mal o desactualizado.

Mirando la fuente de la página, muestra la fuente de la página regular:






Facilities




Al abrir las herramientas de desarrollo, muestra las etiquetas pre:



            "<meta name="viewport" "
            ...
        


Controlador:

public ActionResult Facilities(int selectedFacility = 0, string selectedFacilityName = “”)
{
// construye el modelo, establece valores
return View(“Facilities”, model);
}

[HttpPost]
public ActionResult SelectFacility(int selectedFacility)
{
// Obtiene el nombre de la instalación seleccionada

// Originalmente intenté crear un nuevo modelo de vista, actualizando los 
//    dos valores y mostrarlo así:
// return View("~/views/account/Facilities.cshtml", model);

// Actualmente estoy intentando esto:
return Facilities(selectedFacility, facilityName);

}

Modelo de Vista (no creo que sea demasiado relevante):

public class FacilitiesViewModel
{
public string UserId { get; set; }
public int SelectedFacility { get; set; }
public string SelectedFacilityName { get; set; }
public List FacilityList { get; set; }
public int? DefaultFacility { get; set; }
public string DefaultFacilityName { get; set; }
}

Vista:

@model FacilitiesViewModel
@using NonFactors.Mvc.Grid
@{
ViewBag.Title = “Facilities”;
Layout = “~/Views/Shared/_LayoutWithMenu.cshtml”;
}

Facilities

@using (Html.BeginForm(“SelectFacility”, “Account”, FormMethod.Post, new { name = “frmFacilities”, id = “frmFacilities” }))
{
@Html.AntiForgeryToken()

@(Html
.Grid(Model.FacilityList)
.Build(columns =>
{
columns.Add(model => model.FacilityId).Css(“d-none”);
columns.Add(model => model.FacilityName).Titled(“Name”).Css(“text-start”);
columns.Add(model => model.City).Titled(“City”).Css(“text-start”);
columns.Add(model => model.State).Titled(“State”).Css(“text-start”);
})
.Empty(“No data found”)
.Filterable()
.Sortable()
.Pageable())

@Html.HiddenFor(m => m.SelectedFacility, new { @id = “SelectedFacility” })
@Html.HiddenFor(m => m.DefaultFacility)
}

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en la renderización del HTML en el lado del cliente. El código fuente muestra el formato correcto, pero las herramientas de desarrollo muestran que el HTML se está envolviendo en etiquetas pre, lo que explicaría por qué se muestra en una etiqueta pre en la página.

    Es posible que esto se deba a que la página de diseño contiene formularios. Los formularios pueden interferir en la renderización del HTML, especialmente si están mal anidados o colocados. Vale la pena revisar la página de diseño para asegurarse de que los formularios se estén renderizando correctamente y que no estén causando conflictos con la vista del cuerpo.

    Otro problema potencial podría ser el uso de JavaScript para enviar el formulario. Si bien esto puede funcionar, es posible que esté interfiriendo con la renderización del HTML. Podría valer la pena probar un enfoque diferente, como el uso de un botón de envío tradicional para ver si eso resuelve el problema.

    Finalmente, el problema podría estar en el código del lado del servidor. Es posible que haya algo en el controlador que esté haciendo que el HTML se renderice incorrectamente. Revisar el código y asegurarse de que todo se esté renderizando correctamente podría ayudar a identificar el problema.

    Sin información adicional, es difícil precisar la causa exacta del problema. Sin embargo, es probable que se deba a una combinación de factores, incluido el uso de formularios dentro de la página de diseño, posibles conflictos con JavaScript y problemas con la renderización del lado del servidor.

Comments are closed.