Fehler wie: Die Ansicht 'LoginRegister' oder ihr Master wurde nicht gefunden oder keine Ansichtsmaschine unterstützt die gesuchten Speicherorte. Folgende Standorte wurden gesucht:
~ / Views / MyAccount / LoginRegister.aspx
~ / Views / MyAccount / LoginRegister.ascx
~ / Views / Shared / LoginRegister.aspx
~ / Views / Shared / LoginRegister.ascx
~ / Views / MyAccount / LoginRegister.cshtml
~ / Views / MyAccount / LoginRegister.vbhtml
~ / Views / Shared / LoginRegister.cshtml
~ / Views / Shared / LoginRegister.vbhtml
Eigentlich ist meine Seitenaufrufseite ~/Views/home/LoginRegister.cshtml
so, was ich mache
und mein RouteConfig
ist
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
quelle
quelle
None
anstattContent
so diejenigen und die erneute Veröffentlichung (oder nur das Kopieren der Datei) Umschalten gearbeitet.Antworten:
Seien Sie vorsichtig, wenn Ihr Modelltyp String ist, da der zweite Parameter von View (String, String) masterName und nicht model ist . Möglicherweise müssen Sie die Überladung mit Objekt (Modell) als zweiten Parameter aufrufen:
Nicht richtig :
protected ActionResult ShowMessageResult(string msg) { return View("Message",msg); }
Richtig :
protected ActionResult ShowMessageResult(string msg) { return View("Message",(object)msg); }
ODER (bereitgestellt von bradlis7):
protected ActionResult ShowMessageResult(string msg) { return View("Message",model:msg); }
quelle
(object)msg
return View("Message", model: msg);
Problem:
Sie
View
können nicht an Standardspeicherorten gefunden werden.Erläuterung:
Ansichten sollten sich in demselben Ordner befinden wie der
Controller
oder imShared
Ordner.Lösung:
Verschieben Sie Ihre entweder
View
in denMyAccount
Ordner oder erstellen Sie eineHomeController
.Alternativen:
Wenn Sie Ihre nicht verschieben
View
oder eine neue erstellen möchten,Controller
können Sie dies unter diesem Link überprüfen .quelle
In Microsoft ASP.net MVC wurde die Routing-Engine, mit der eingehende und ausgehende URL-Kombinationen analysiert werden, mit der Idee der Konvention über die Konfiguration entwickelt. Dies bedeutet, dass Sie die Konfiguration nicht ändern müssen, wenn Sie die Konvention (Regeln) befolgen, die die Routing-Engine verwendet.
Die Routing-Engine für ASP.net MVC bedient keine Webseiten (.cshtml). Es bietet eine Möglichkeit, eine URL von einer Klasse in Ihrem Code zu verarbeiten, die Text / HTML in den Ausgabestream rendern oder die CSHTM-Dateien mithilfe von Konvention auf konsistente Weise analysieren und bereitstellen kann.
Das Übereinkommen , die für das Routing verwendet wird , ist mit einem Namen eines Controllers zu einer Klasse entsprechen
ControllerNameController
dhcontroller="MyAccount"
Mittel namens finden KlasseMyAccountController
. Als nächstes folgt die Aktion, die einer Funktion innerhalb der Controller-Klasse zugeordnet ist, die normalerweise eine zurückgibtActionResult
. dhaction="LoginRegister"
sucht nach einer Funktionpublic ActionResult LoginRegister(){}
in der Klasse des Controllers. Diese Funktion kann eine zurückgeben,View()
die gemäß der Konvention benanntLoginRegister.cshtml
und im/Views/MyAccount/
Ordner gespeichert ist .Zusammenfassend hätten Sie den folgenden Code:
/Controllers/MyAccountController.cs:
public class MyAccountController : Controller { public ActionResult LoginRegister() { return View(); } }
/Views/MyAccount/LoginRegister.cshtml: Ihre Ansichtsdatei.
quelle
In Ihrer LoginRegister-Aktion, wenn Sie die Ansicht zurückgeben, gehen Sie wie folgt vor. Ich weiß, dass dies in MVC 5 möglich ist. Ich bin mir nicht sicher, ob dies auch in MVC 4 möglich ist.
public ActionResult Index() { return View("~/Views/home/LoginRegister.cshtml"); }
quelle
Überprüfen Sie die Erstellungsaktion Ihrer Ansicht (.cshtml-Datei). Sie sollte auf Inhalt gesetzt sein. In einigen Fällen habe ich festgestellt, dass die Build-Aktion (aus Versehen) auf "Keine" gesetzt wurde und diese bestimmte Ansicht nicht auf dem Zielcomputer bereitgestellt wurde, obwohl diese Ansicht in der Visual Studio-Projektdatei unter einem gültigen Ordner vorhanden ist
quelle
Dies kann ein Berechtigungsproblem sein.
Ich hatte vor kurzem das gleiche Problem. Als Test habe ich eine einfache hello.html-Seite erstellt. Beim Versuch, es zu laden, wurde eine Fehlermeldung bezüglich der Berechtigungen angezeigt. Nachdem ich das Berechtigungsproblem im Stammwebordner behoben hatte, wurden sowohl die Probleme mit der HTML-Seite als auch mit dem MVC-Rendering behoben.
quelle
Überprüfen Sie, ob die von Ihnen erstellte Ansicht (ASPX-Datei) denselben Namen hat wie im Controller angegeben. Zum Beispiel:
public ActionResult GetView() { return View("MyView"); }
In diesem Fall sollte die Aspx-Datei den Namen MyView.aspx anstelle von GetView.aspx haben
quelle
Ich habe diesen Fehler erhalten, weil ich meine Ansicht (und POST-Aktion) umbenannt habe.
Schließlich stellte ich fest, dass ich vergessen hatte, BEIDE GET- und POST-Aktionen in einen neuen Namen umzubenennen.
Lösung : Benennen Sie die Aktionen GET und POST so um, dass sie dem Namen der Ansicht entsprechen.
quelle
Wenn das Problem in der Produktion zeitweise auftritt, kann dies daran liegen, dass eine Aktionsmethode unterbrochen wird. Während eines POST-Vorgangs mit einem Upload großer Dateien schließt der Benutzer beispielsweise das Browserfenster, bevor der Upload abgeschlossen ist. In diesem Fall kann die Aktionsmethode eine Nullreferenzausnahme auslösen, die sich aus einem Nullmodell oder einem Ansichtsobjekt ergibt. Eine Lösung wäre, den Methodenkörper in einen try / catch zu verpacken und null zurückzugeben. So was:
[HttpPost] public ActionResult Post(...) { try { ... } catch (NullReferenceException ex) // could happen if POST is interrupted { // perhaps log a warning here return null; } return View(model); }
quelle
Ich hatte das gleiche Problem. Ich hatte eine Ansicht "Film" kopiert und entsprechend in "Kunde" umbenannt. Das habe ich auch mit den Modellen und den Controllern gemacht.
Das hat funktioniert.
Ich würde gerne die wahre Ursache des Problems kennen.
UPDATE Nur zum Grinsen ... Ich ging zurück und replizierte das gesamte Umbenennungsszenario erneut ... und bekam keine Fehler.
quelle
Wenn Sie alle Punkte aus den obigen Antworten überprüft haben (was häufige Fehler sind) und sicher sind, dass sich Ihre Ansicht an der Stelle in den Ausnahmen befindet, müssen Sie Visual Studio möglicherweise neu starten .
:(
quelle
In meinem Fall musste ich RedirectToAction verwenden, um das Problem zu lösen.
[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(); }
quelle
Ich bin vor einiger Zeit darauf gestoßen und es hat mich verrückt gemacht, weil es sich als einfach herausgestellt hat. Daher habe ich in meiner Ansicht ein Rastersteuerelement verwendet, das über eine http-Anforderung Daten für das Raster abgerufen hat. Nachdem die mittlere Ebene meine Anfrage abgeschlossen und den Datensatz zurückgegeben hatte, erhielt ich denselben Fehler. Es stellte sich heraus, dass meine return-Anweisung 'return View (Datensatz)' war. anstelle von 'return Json (Datensatz);
quelle
Ich bin auf diesen Fehler gestoßen, weil die Anweisung nicht ordnungsgemäß geschlossen wurde.
@using (Html.BeginForm ("DeleteSelected", "Employee", FormMethod.Post))
{
} // Diese geschweifte Klammer musste am Ende geschlossen werden.
In der Ansichtsdatei Index.cshtml. Ich habe die Anweisung am Ende des Programms nicht geschlossen. Stattdessen habe ich falsch geschlossen und bin auf diesen Fehler gestoßen.
Ich war mir sicher, dass der Controller ActionMethod-Code nicht überprüft werden muss, da ich die Controller-Methode ordnungsgemäß an die Ansicht zurückgegeben habe. Es muss also die Ansicht sein, die nicht reagiert und auf einen ähnlichen Fehler stößt.
quelle