Error como: No se encontró la vista 'LoginRegister' o su maestro o ningún motor de vista admite las ubicaciones buscadas. Se buscaron las siguientes ubicaciones:
~ / Vistas / Mi cuenta / LoginRegister.aspx
~ / Vistas / Mi cuenta / LoginRegister.ascx
~ / Vistas / Compartido / LoginRegister.aspx
~ / Vistas / Compartido / LoginRegister.ascx
~ / Views / MyAccount / LoginRegister.cshtml
~ / Views / MyAccount / LoginRegister.vbhtml
~ / Views / Shared / LoginRegister.cshtml
~ / Views / Shared / LoginRegister.vbhtml
En realidad, mi página de vista de página es ~/Views/home/LoginRegister.cshtml
lo que hago
y mi RouteConfig
es
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "MyAccount", action = "LoginRegister", id = UrlParameter.Optional }
);
}
}
asp.net-mvc-4
user2564537
fuente
fuente
None
lugar deContent
cambiarlos y volver a publicar (o simplemente copiar el archivo) funcionó.Respuestas:
Tenga cuidado si su tipo de modelo es String porque el segundo parámetro de View (string, string) es masterName, no model . Es posible que deba llamar a la sobrecarga con el objeto (modelo) como segundo parámetro:
Incorrecto :
protected ActionResult ShowMessageResult(string msg) { return View("Message",msg); }
Correcto:
protected ActionResult ShowMessageResult(string msg) { return View("Message",(object)msg); }
O (proporcionado por bradlis7):
protected ActionResult ShowMessageResult(string msg) { return View("Message",model:msg); }
fuente
(object)msg
, especifique el argumento explícitamente:return View("Message", model: msg);
Problema:
No
View
se puede encontrar tu en ubicaciones predeterminadas.Explicación:
Las vistas deben estar en la misma carpeta con el nombre
Controller
o en laShared
carpeta.Solución:
Mueva su
View
a laMyAccount
carpeta o cree un archivoHomeController
.Alternativas:
Si no desea mover su
View
o crear uno nuevoController
, puede consultar este enlace .fuente
En Microsoft ASP.net MVC, el motor de enrutamiento, que se utiliza para analizar las combinaciones de URL entrantes y salientes, está diseñado con la idea de Convención sobre configuración. Lo que esto significa es que si sigue la Convención (reglas) que usa el motor de enrutamiento, no tiene que cambiar la Configuración.
El motor de enrutamiento de ASP.net MVC no ofrece páginas web (.cshtml). Proporciona una forma de que una URL sea manejada por una clase en su código, que puede representar texto / html en el flujo de salida, o analizar y entregar los archivos .cshtml de una manera consistente usando la Convención.
La convención que se utiliza para el enrutamiento es hacer coincidir un controlador con una clase con un nombre similar,
ControllerNameController
es decir,controller="MyAccount"
significa buscar la clase nombradaMyAccountController
. Luego viene la acción, que se asigna a una función dentro de la Clase de controlador, que generalmente devuelve unActionResult
. es deciraction="LoginRegister"
, buscará una funciónpublic ActionResult LoginRegister(){}
en la clase del controlador. Esta función puede devolver unView()
que sería nombrado por ConvenciónLoginRegister.cshtml
y se almacenaría en el/Views/MyAccount/
carpeta.Para resumir, tendrías el siguiente código:
/Controllers/MyAccountController.cs:
public class MyAccountController : Controller { public ActionResult LoginRegister() { return View(); } }
/Views/MyAccount/LoginRegister.cshtml: su archivo de vista.
fuente
En su acción LoginRegister al devolver la vista, haga lo siguiente, sé que esto se puede hacer en mvc 5, no estoy seguro si también en mvc 4.
public ActionResult Index() { return View("~/Views/home/LoginRegister.cshtml"); }
fuente
Verifique la acción de compilación de su vista (archivo .cshtml). Debe configurarse como contenido. En algunos casos, he visto que la acción de compilación se estableció en Ninguno (por error) y esta vista en particular no se implementó en la máquina de destino a pesar de que ve esa vista presente en el archivo de proyecto de Visual Studio en una carpeta válida
fuente
Esto podría ser un problema de permisos.
Tuve el mismo problema recientemente. Como prueba, creé una simple página hello.html. Cuando intenté cargarlo, recibí un mensaje de error con respecto a los permisos. Una vez que solucioné el problema de permisos en la carpeta web raíz, se resolvieron tanto la página html como los problemas de representación de MVC.
fuente
Compruebe si la vista (archivo .ASPX) que ha creado tiene el mismo nombre que se menciona en el controlador. Por ejemplo:
public ActionResult GetView() { return View("MyView"); }
En este caso, el archivo aspx debería tener el nombre MyView.aspx en lugar de GetView.aspx
fuente
Recibí este error porque cambié el nombre de mi Vista (y la acción POST).
Finalmente descubrí que olvidé cambiar el nombre de las acciones GET y POST a un nuevo nombre.
Solución : cambie el nombre de las acciones GET y POST para que coincidan con el nombre de la vista.
fuente
Si el problema ocurre de forma intermitente en producción, podría deberse a la interrupción de un método de acción. Por ejemplo, durante una operación POST que implica la carga de un archivo grande, el usuario cierra la ventana del navegador antes de que se complete la carga. En este caso, el método de acción puede lanzar una excepción de referencia nula resultante de un modelo nulo o un objeto de vista. Una solución sería envolver el cuerpo del método en un try / catch y devolver null. Me gusta esto:
[HttpPost] public ActionResult Post(...) { try { ... } catch (NullReferenceException ex) // could happen if POST is interrupted { // perhaps log a warning here return null; } return View(model); }
fuente
Tuve el mismo problema. Había copiado una vista "Película" y le había cambiado el nombre "Cliente" en consecuencia. También hice lo mismo con los modelos y los controladores.
Esto funcionó.
Me encantaría saber la verdadera causa del problema.
ACTUALIZACIÓN Solo por sonrisas ... Volví y repuse todo el escenario de cambio de nombre nuevamente ... y no obtuve ningún error.
fuente
Si ha comprobado todas las cosas de las respuestas anteriores (que son errores comunes) y está seguro de que su vista está en la ubicación de las excepciones, es posible que deba reiniciar Visual Studio.
:(
fuente
En mi caso, necesitaba usar RedirectToAction para resolver el problema.
[HttpGet] [ControleDeAcessoAuthorize("Report/ExportToPDF")] public ActionResult ExportToPDF(int id, string month, string output) { try { // Validate if (output != "PDF") { throw new Exception("Invalid output."); } else { ...// code to generate report in PDF format } } catch (Exception ex) { return RedirectToAction("Error"); } } [ControleDeAcessoAuthorize("Report/Error")] public ActionResult Error() { return View(); }
fuente
Me encontré con esto hace un tiempo y me volvió loco porque resultó ser simple. Entonces, dentro de mi Vista, estaba usando un control de cuadrícula que obtenía datos para la cuadrícula a través de una solicitud http. Una vez que el nivel intermedio completó mi solicitud y devolvió el conjunto de datos, recibí el mismo error. Resulta que mi declaración de devolución fue 'return View (conjunto de datos);' en lugar de 'return Json (conjunto de datos);
fuente
Me encontré con este error debido al cierre incorrecto de la declaración,
@using (Html.BeginForm ("DeleteSelected", "Empleado", FormMethod.Post))
{
} // Este corchete debe cerrarse al final.
En el archivo de vista Index.cshtml, no cerré la declaración al final del programa. en cambio, terminé cerrando incorrectamente y encontré este error.
Estaba seguro de que no era necesario verificar el código del método de acción del controlador porque he devuelto el método del controlador correctamente a la vista. Así que tiene que ser la vista la que no responde y se encuentra con un error similar.
fuente
No pude encontrar ninguna solución a este problema, ¡hasta que descubrí que los archivos no existían! Me tomó mucho tiempo averiguarlo, ¡porque el Explorador de soluciones muestra los archivos!
Pero cuando hago clic en Index.cshtml, aparece este error:
Así que esa fue la razón por la que se mostró este error. Espero que esta respuesta ayude a alguien.
fuente