Как перенаправить в случайный идентификатор с другого контроллера? - PullRequest
0 голосов
/ 11 июня 2019

Мой проект - обзорный сайт о фильмах, сериалах и актерах.У меня уже есть просмотры фильмов, сериалов и актеров (индекс, детали, редактирование и удаление), с правильными контроллерами и всем.Но теперь я пытаюсь создать кнопки «Создать случайный фильм» и «Создать случайную серию» на главном экране, чтобы при нажатии на эту кнопку меня перенаправляли в случайный фильм / серию.

Таким образом, URL должен быть от Home/Index до Movies/Details/"Random Id" (то же самое для серий).

У меня нет ничего в Home Controller, кроме возврата View () в классе индекса.

Итак, я хотел бы знать, что я должен вставить в контроллер и в кнопку Actionlink /, чтобы перенаправить его на случайный фильм.

Редактировать:

Модели: Модель фильма:

public class MovieViewModel
    {
        public int MovieID { get; set; }
        public string MovieName { get; set; }
        public string MovieDescription { get; set; }
        public string MovieCategory { get; set; }
        public string MovieYear { get; set; }
    }

Модель серии:

public class SeriesViewModel
    {
        public int SerieID { get; set; }
        public string SerieName { get; set; }
        public string SerieCategory { get; set; }
        public string SerieDescription { get; set; }
        public string SerieYear { get; set; }
    }

Это подробности Вид из фильмов (Сериалы в значительной степени совпадают)

<div>
    <hr />
    <dl class="dl-horizontal">
        <dt>
            <p>Movie Name: </p>
            <p> </p>


        </dt>

        <dd>
            @Html.DisplayFor(model => model.MovieName)
        </dd>

        <dt>
            <p>Movie Description: </p>
            <p> </p>


        </dt>

        <dd>
            @Html.DisplayFor(model => model.MovieDescription)
        </dd>

        <dt>
            <p>Category: </p>
            <p> </p>


        </dt>

        <dd>
            @Html.DisplayFor(model => model.MovieCategory)
        </dd>

        <dt>
            <p>Year of the movie: </p>
            <p> </p>


        </dt>

        <dd>
            @Html.DisplayFor(model => model.MovieYear)
        </dd>

    </dl>
</div>
<p>
    @Html.ActionLink("Edit", "Edit", new { id = Model.MovieID }) |
    @Html.ActionLink("Back to List", "Index")
</p>

Ответы [ 4 ]

2 голосов
/ 11 июня 2019

Вам нужно добавить '/' в URL

 @Html.ActionLink("Something", "/Movies/Details")
1 голос
/ 11 июня 2019

Итак,

Сначала вам нужно в домашнем просмотре ссылку на контроллер, который будет генерировать вашу случайную страницу, эта строка была отправлена ​​Saqib abbas

@Html.ActionLink("Something", "/Movies/Details")

рядом с вашим MoviesController

создать метод

public ActionResult Details()
{
    // First we'll determine if we return a movie or a serie 
    Random movieOrSerie = new Random();
    int movieOrSerie = random1.Next(1, 2);

    if(movieOrSerie == 1) // if 1 we'll search for a random Movie
    {
        var movies = //get your list of movies here
        Random movieIndex = new Random();
        int movieIndex = random1.Next(0, movies.Count);
        var movie = movies.ElementAt(movieIndex);
    }
    else // same for series
    {
        var series = //get your list of series here
        Random serieIndex = new Random();
        int serieIndex = random1.Next(0, series.Count);
        var serie = series.ElementAt(serieIndex);
    }
    // then you have to put the serie or movie in your viewModel 
    return View("ViewName", ViewModel)
}

это не самый красивый способ, пришлите нам свою серию Movie и, возможно, родительский класс (если есть), модель и представление страницы Details иЯ обновлю этот ответ.

0 голосов
/ 11 июня 2019

Я обновил ваш код, попробуйте это:

<div class="row">
    <div class="col-md-4">
        <h2>Random Movie Generator</h2>
        <p>

        </p>
        @Html.ActionLink("Somethin", "Movies","Details",new { id = item.MovieID},new {@class= "btn btn-success" })
    </div>

Это также сделает вашу ссылку похожей на фактическую кнопку.

0 голосов
/ 11 июня 2019

Если у вас есть другой контроллер с именем MoviesController, я рекомендую записать свой якорь как

@Html.ActionLink("ActionLinkName", "Details", "Movies", new { id = item.MovieID });

Это означает, что вы хотите создать ссылку на метод с именем Detailsвнутри MoviesController, который принимает параметр с именем id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...