Metoda działania publicznego ".." nie został znaleziony na kontrolerze ".."
Chciałem umieścić losowy obraz na każdej stronie przeglądania mojego projektu MVC. Dlatego stworzyłem metodę, która zwraca partializację i powoduje, że ta metoda na stronie Udostępniona Układ.
Działa to świetnie, gdy próbuję zalogować się przy użyciu poprawnej nazwy użytkownika i hasła. Użytkownik loguje się, a każda strona zawiera losowy obraz. Ale kiedy podam złą kombinację nazwy użytkownika i hasła. Strona ogólnego układu nie znajduje kontrolera, który chcę wywołać z moim
@ Html.Actioni w rzeczywistości widok logowania powinien zostać zwrócony z komunikatem o błędzie „nieprawidłowa kombinacja nazwy użytkownika i hasła” i oczywiście to samo , z losowym obrazem.
InnerException:
{„Nie znaleziono metody akcji publicznej„ RandomSponsor ”w kontrolerze„ Project.WebUI.Controllers.HomeController ”."}
Mój html.Action we wspólnym układzie.
@Html.Action("RandomSponsor", "Home")
Metoda w HomeController.
[HttpGet]
[ChildActionOnly]
public ActionResult RandomSponsor()
{
var model = service.getRandomSponsor();
return PartialView("RandomSponsor", model);
}
Metoda getRandomSponsor działa dobrze, zawsze zwraca jedną losową wartość ciągu, która jest zwracana do widoku RandomSponsor.cshtml.
RandomSponsor.schtml (zawiera tylko ciąg obrazu)
<img src="~/Content/Images/Advert/@(Model)" alt="a"/>
Szukałem tego problemu w Internecie, ale nie znalazłem rozwiązania, czy ktoś znał odpowiedź na to pytanie?
Może to coś z HttpGet z HttpPost?
Z poważaniem.
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
8 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Bardzo podobny do tego problemu, który miałem tutaj -
jak rozwiązać problem „metoda akcji publicznej” methodActionName ”nie została znaleziona na kontrolerze„ controllerNameController ””
https://coderoad.ru/34646323/
A jeśli chcesz nadal akceptować czasownik HTTP GET i rozwiązać problem kaskadowego żądania postu, aby uzyskać żądanie, dodaj to do swojej metody
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post
)]
Należy pamiętać, że [httpget] jest taki sam jak
[AcceptVerbs(HttpVerbs.Get
)]
Anonimowy użytkownik
Potwierdzenie od:
[Httpget]
. Jeśli żądanie źródła jest post , a następnie wszystkie metody kontrolera spowodowane przez następnie będą musiały obsługiwać post .Aby to naprawić, możesz użyć atrybutu , aby wskazać, że metoda kontrolera akceptuje zarówno , jak i :
[AcceptVerbs(HttpVerbs.Post | HttpVerbs.Get)]
Anonimowy użytkownik
Potwierdzenie od:
Po wypróbowaniu innych rozwiązań w tym poście i innych, wróciliśmy do wprowadzonych przez nas zmian i ostatecznie zatrzymaliśmy błędy, ponieważ zmieniliśmy powiązania w usługach IIS na inną domenę, w której włączona jest reguła przepisywania. „Wymuś adres URL z małymi literami” adres URL.
Kiedy odłączyliśmy zasadę wymuszonego użycia dolnego rejestru, błędy zatrzymały się, a strona działała tak, jak powinna mieć. To nie jest problem przepisania adresu URL (nie sądzę), ponieważ możemy zmusić do użycia www używając go bez błędów. Jest to problem przepisania w małych literach. Nie miało znaczenia, czy mieliśmy zasadę niższego rejestru przed lub po zasadzie WWW.
To rozwiązanie prawdopodobnie nie ma zastosowania w wielu przypadkach tego błędu, ale zadziałało. Miejmy nadzieję, że ktoś inny odniesie korzyści z tak prostej poprawki.
Anonimowy użytkownik
Potwierdzenie od:
Użyj (html.beginform ())
Zmień wyżej o
Użyj (html.beginform ("akcja", "kontroler", formmethod.post))
Naprawiono ten problem.
Anonimowy użytkownik
Potwierdzenie od:
Scenariusz
Próbowałem spowodować spółkę zależną przez @ html.Action ("ActionName", nowy {ID = 123}) i otrzymał błąd, bardzo podobny do powyższego opisanego powyżej, ale żaden z innych rozwiązań działało. Mogę trafić na działanie kontrolera zewnętrznie (na przykład httpget), ale działanie dziecka nadal rzuciło wyjątek i pojechał mnie do szału!
Rozwiązanie, które znalazłem
Po dwukrotnym tyle i wciągu przez jakiś czas zacząłem grać z moimi atrybutami routingu. Skonfigurowałem kontroler w następujący sposób:
Ponieważ poszedł tylko jedna publiczna akcja, którą chciałem, "indeks", usunięłem {działanie} i umieściłem wyraźny atrybut trasy do działań publicznych, a twój atrybut dla dziecka wrócił do spółki zależnej.
Po tym, jak zrobiłem, wpadłem do ucieczki, a Hej, Pretto - akcja była zdumiona.
Możliwe jest wypróbowanie, jeśli otrzymasz ten błąd podczas korzystania z trasowania atrybutu.
Zauważ, że próbowałem pokierować działaniem dziecka i to nie zadziałało.
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Więcej informacji można znaleźć w następujących sekcjach:
Należy również zauważyć, że w przypadku lub widok nie musi być w
Generał
folder, jest to potrzebne tylko wtedy, gdy używasz lub