2017-11-15 3 views
0

Erstens, danke für Ihre Antworten. Ich habe ein Problem mit dem Routing auf Asp.Net MVC.Asp.Net MVC Routing und URL Problem

enter image description here

Sie können meine Lösung hier auf dem Foto, wo mein Controller und Blick sehen. Ich möchte "UserProfile.cshtml" von "Index.cshtml" öffnen. Nun, mein erster Ansatz ist die Verwendung von Ajax zum Posten von "UserProfile Action" in ProfileController.

Diese Codebausteine ​​werden an den Controller gesendet und führen die Aktion "UserProfile" aus, geben jedoch keinen Fehler und keine Ansicht zurück. Auch URL ändert sich nicht.

public ActionResult UserProfile() 
    { 
     return View(); 
    } 

Ich würde Ihre hilfreichen Antworten und Unterstützung sehr schätzen. Vielen Dank!

+1

ASP.NET Core ist nicht in der Lage aspx Seiten zu verarbeiten – hardkoded

+1

Ihre Ansichten benötigen Razor (.cshtml) Ansichten und die Standard-Routing ist definiert als in RouteConfig.cs im Ordner App_Start – GregH

+0

@peggy danke. Ich habe mich in cshtml geändert. Das Problem mit der URL wurde mit View behoben. aber der folgende Codeblock gibt immer noch nichts zurück. Es trifft dort aber kein Fehler und keine Ansicht wieder. public ActionResult UserProfile() { return Ansicht(); } – Johnny

Antwort

0

Zuerst müssen Sie Razor (.cshtml) Ansichten haben, nicht Aspx für MVC, um diese Seiten out of the box zu dienen. Wenn Sie eine Controlleraktion mit dem Namen UserProfile in einer ProfileController haben und return View() anrufen, wird mvc standardmäßig versuchen, die Ansicht unter Views/Profile/UserProfile.cshtml zurückzugeben (es wird tatsächlich auch ein paar andere Orte überprüfen, wie den Views/Shared/Ordner für die Ansicht). . Folgendes sollte für Sie arbeiten:

//located in ProfileController 
[HttpPost] 
public ActionResult UserProfile() 
{ 
    return View(); 
} 

//located at Views/Profile/UserProfile.cshtml 
`<h4>you've found your user profile page!</h4>` 

Wenn Sie versuchen, von AJAX diese Ansicht zu schlagen dann müssen Sie das Problem aus einer etwas anderen Richtung angreifen. Umleitung auf der Server-Seite funktioniert nicht mit Ajax, da es asynchron ist. Sie können dies erreichen, indem die .done() Ajax-Rückruf etwas wie die Verwendung von folgenden:

$.ajax({ 
    url: "/Profile/UserProfile", 
    type: "POST", 
    dataType: "json" 
}).done(function(response){ 
    window.location = '/Profile/UserProfile' 
}); 
+0

Ich habe meine Frage hier im Lichte Ihrer Empfehlungen bearbeitet. Sie können den Screenshot und die Codes dort sehen. Aber das Problem ist immer noch das gleiche. Es trifft den Breakpoint in Aktion aber gibt keinen Fehler zurück und zeigt wieder. – Johnny

+0

@Johnny Hat einen Breakpoint in der Ajax '.done' Callback get hit? Auch, wenn Sie Ajax verwenden, ist es viel üblicher, ein' JsonResult' oder 'PartialView' in der Controller-Aktion zurück und dann darauf handeln (zeigen Sie die Teilansicht oder zu tun etwas mit den JSON-Daten) durch das 'response'-Objekt im '.done'-Callback. – GregH