Eine öffentliche Aktionsmethode '..' wurde nicht gefunden. '..'
Wollte ich mit einem zufälligen Bild auf jeder viewpage von meinem mvc-Projekt. Also habe ich eine Methode erstellt, gibt einen partialView und rufen Sie die Methode in der freigegebenen Layout-Seite.
Dies funktioniert problemlos, wenn ich versuche, um sich mit einem korrekten Benutzernamen und Passwort. Die verwendete dem einloggen und jede Seite enthält ein zufälliges Bild. Aber wenn ich das ungültige Kombination von Benutzername und Passwort. Das gemeinsame layout der Seite nicht finden, den controller möchte ich nennen, mit meinem @Html.Action
und eigentlich der login-Ansicht sollte zurückgegeben werden mit einer Fehlermeldung 'ungültige Kombination von Benutzername und Passwort" und natürlich mit dem random image.
InnerException:
{"Öffentlichen Maßnahmen " Methode RandomSponsor' wurde nicht gefunden auf controller " - Projekt.WebUI.Controller.HomeController'."}
Meine Html.Aktion im freigegebenen layout.
@Html.Action("RandomSponsor", "Home")
Methode im homecontroller.
[HttpGet]
[ChildActionOnly]
public ActionResult RandomSponsor()
{
var model = service.getRandomSponsor();
return PartialView("RandomSponsor", model);
}
Den getRandomSponsor Methode funktioniert gut, das man immer wieder einen zufälligen string Wert, der zurückgegeben wird, um die RandomSponsor.cshtml-Ansicht.
RandomSponsor.schtml (enthält nur das Bild, string)
<img src="~/Content/Images/Advert/@(Model)" alt="a" />
Suchte ich im Internet nach diesem problem aber habe keine Lösung gefunden, weiß jemand die Antwort auf diese ein?
Könnte es etwas werden mit HttpGet von HttpPost?
Grüße.
InformationsquelleAutor der Frage Gijs | 2013-06-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn der ausführende die Anfrage
POST
dann wird es versuchen, eine Methode zu findenRandomSponsor
AnnahmeHttpPost
. Wenn Sinn macht, Sie entfernen konnteHttpGet
und das sollte den trick tun.Kann dies auch passieren, wenn Sie viele Schichten der Anrufe, die beginnen mit einem BEITRAG (ich hatte eine Aktion der Rückkehr eine Ansicht, die einen partial view aufrufen
RenderAction
), dann wird der Anruf zuRenderAction
wird noch immer für eine POST-Methode,InformationsquelleAutor der Antwort Claudio Redi
Kann dies auch passieren, wenn Sie viele Schichten der Anrufe, die beginnen mit einem BEITRAG (ich hatte eine Aktion die Rückgabe einer Ansicht der Rückkehr eine teilweise Ansicht aufrufen RenderAction), dann wird der Anruf zu RenderAction wird noch immer für eine POST-Methode,
Sehr ähnlich zu diesem problem, das hatte ich hier - Wie zu lösen "öffentliche Aktion-Methode 'methodActionName' wurde nicht gefunden auf controller 'controllerNameController'"
Und wenn Sie wollen auch weiterhin übernehmen Sie die HTTP-GET-verb und beheben das problem für cascading post-Anforderung in einer get-Anforderung hinzufügen Ihre Methode
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
Beachten Sie, dass [HttpGet] ist das gleiche wie [AcceptVerbs(HttpVerbs.Holen Sie sich)]
InformationsquelleAutor der Antwort Mauricio Gracia Gutierrez
Erhielt dieser Fehler plötzlich auf verschiedenen PartialViews (nicht alle), die beim anpassen einer Installation von MVCForum. Wir hatten keine änderungen an den Methoden oder Ansichten bezüglich der Fehler so, es war wirklich frustrierend, warum Sie kaputt waren.
Nach dem Versuch, die andere Lösungen auf diesem posten und die anderen, ging zurück durch die änderungen gemacht und was am Ende stoppen der Fehler war, dass wir uns geändert hatte, die Bindungen im IIS auf eine andere domain, die hatte die 'Durchsetzung der Kleinschreibung url' URL Rewrite-Regel aktiviert.
Wenn wir Behinderten die Durchsetzung der Kleinschreibung die Regel, die Fehler gestoppt und die Seite funktionierte wie es sollte. Es ist nicht eine URL Rewrite Frage (ich glaube nicht), denn wir sind in der Lage, durchzusetzen, www-mit keine Fehler. Es ist ein kleines rewrite Problem. Egal, wenn wir die Kleinbuchstaben der Regel vor oder nach der www-Regel.
Diese Lösung wahrscheinlich nicht für viele Fälle von diesem Fehler, aber es funktionierte für uns. Hoffentlich jemand anderes davon profitieren kann wie eine einfache Lösung.
InformationsquelleAutor der Antwort swimex
In meinem Fall das gleiche Problem geschah zufällig mit der impliziten
using(Html.BeginForm())
Ändern oben
using (Html.BeginForm("Action","Controller", FormMethod.Post))
behoben dieses Problem.
InformationsquelleAutor der Antwort tomekole
Haben Sie give it a shot mit
Html.RenderAction
? Es ist in der Regel schneller, dannHtml.Action
wie Sie interagieren direkt in den response-stream im Gegensatz zum Aufbau einer Zeichenkette.Finden Sie die folgenden Themen für weitere Informationen:
Andere Sache zu beachten ist, dass für
Html.Action
oderHtml.RenderAction
Ihre Ansicht nicht brauchen, um in Gemeinsamen Ordner, das ist nur erforderlich, wenn SieHtml.Partial
oderHtml.RenderPartial
InformationsquelleAutor der Antwort Pierluc SS