ASP.NET MVC + Błąd strony 404

0

Szanowni Państwo,

Zacząłem się uczyć ASP.NET MVC z kursu. I prawdopodobnie gdzieś zrobiłem mały błąd sprawiający, że strona nie wyświetla mi się prawidłowo
Odpalam stronę z Visual Studio i wchodzę na adres:
https://localhost:44394/Movies/Random

i otrzymuję błąd:

Błąd serwera w aplikacji '/'.
Nie można znaleźć zasobu.

A tak wygląda kontroller:

[Route("movies/released/{year}/{month:regex(\\d{2}):range(1,12)}")]

        public ActionResult Random()
        {
            var movie = new Movie() { Name = "Shrek!" };

            var viewResult = new ViewResult();
            var customers = new List<Customer>
            {
                new Customer { Name = "Customer 1"},
                new Customer { Name = "Customer 2"}
            };

            var viewModel = new RandomMovieViewModel
            {
                Movie = movie,
                Customers = customers
            };

            return View(viewModel);
             
        } 

A tak widok:

@model UdemyProject.ViewModels.RandomMovieViewModel
@{
    ViewBag.Title = "Random";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
@{ 
    var className = Model.Customers.Count > 5 ? "popular" : null;
}

<h2 class="@className">@Model.Movie.Name</h2>


@if (Model.Customers.Count == 0)
{
    <text>No one has rented this movie before.</text>
}
else
{
    <ul>
        @foreach (var customer in Model.Customers)
        {
            <li>@customer.Name</li>
        }
    </ul>
}

Jakieś porady co jeszcze sprawdzić? Dopiero zaczynam naukę z tym frameworkiem i naprawdę niewiele umiem.

2

No bo w parametrze Route, zdefiniowałeś inną ścieżkę, musisz wklepać na przykład https://localhost:44394/Movies/Released/2020/12
Ale Ty i tak nie bindujesz tych parametrów year, month, więc możesz je wyrzucić/ignorować.

Powinieneś zostawić

[Route("movies/released")], albo [Route("movies/random")], żeby działał Ci ten link, który wkleiłeś.

0
urke napisał(a):

No bo w parametrze Route, zdefiniowałeś inną ścieżkę, musisz wklepać na przykład https://localhost:44394/Movies/Released/2020/12

Ale Ty i tak nie bindujesz tych parametrów year, month, więc możesz je wyrzucić/ignorować.

Powinieneś zostawić

[Route("movies/released")], albo [Route("movies/random")], żeby działał Ci ten link, który wkleiłeś.

Wyrzuciłem (zakomentowałem) tą linijkę z [Route] tak jak mówiłeś i teraz mam błąd:

The view 'Random' or its master was not found or no view engine supports the searched locations. The following locations were searched:
~/Views/Movies/Random.aspx
~/Views/Movies/Random.ascx
~/Views/Shared/Random.aspx
~/Views/Shared/Random.ascx
~/Views/Movies/Random.cshtml
~/Views/Movies/Random.vbhtml
~/Views/Shared/Random.cshtml
~/Views/Shared/Random.vbhtml
Opis: Podczas wykonywania bieżącego żądania sieci Web wystąpił nieobsługiwany wyjątek. Aby uzyskać dodatkowe informacje o błędzie i miejscu jego występowania w kodzie, przejrzyj ślad stosu.

0

Dlaczego zakomentowałeś/wyrzuciłeś?
Miałeś ją podmienić na to co podałem względem własnych preferencji.

1

Czy twój widok jest na pewno w pliku Random.cshtml w katalogu Views/Movies?

0
Ktos napisał(a):

Czy twój widok jest na pewno w pliku Random.cshtml w katalogu Views/Movies?

eureka! Plik znajdował się w Views/Movie a nie Views/Movies xD
Poprawiłem nazwę folderu na "Movies" i już działa : )

urke napisał(a):

No bo w parametrze Route, zdefiniowałeś inną ścieżkę, musisz wklepać na przykład https://localhost:44394/Movies/Released/2020/12

Ale Ty i tak nie bindujesz tych parametrów year, month, więc możesz je wyrzucić/ignorować.

Powinieneś zostawić

[Route("movies/released")], albo [Route("movies/random")], żeby działał Ci ten link, który wkleiłeś.

Problem był w nazwie folderu. A teraz jakbym chciał by można było zrobić i tak i tak? I żeby działał link z "movies/random" i "movies/released"?
Bo teraz muszę mieć zakomentowany pierwotny Route, żeby działało.

2

Teraz Ci działa na defaultowym mapowaniu routingu => nazwa_kontrolera/nazwa_akcji

Jak chcesz w url mieć inny adres do tego zasobu, no to nadaj takowy w tym atrybucie Route.

Tutaj poczytaj, to zrozumiesz https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-3.1

1 użytkowników online, w tym zalogowanych: 0, gości: 1