如何从另一个控制器重定向到随机ID?

时间:2019-06-11 08:55:18

标签: c# html asp.net-mvc razor

我的项目是有关电影,电视剧和演员的评论网站。 我已经完成了电影,系列和演员的观看(索引,详细信息,编辑和删除),并带有正确的控制器和所有内容。但是现在我试图在主视图中创建“生成随机电影”和“生成随机序列”按钮,以便当我单击该按钮时,它会将我重定向到随机电影/序列。

因此,URL应该从Home/IndexMovies/Details/"Random Id"(系列相同)。

除了索引类中的View()返回之外,Home Controller中没有任何内容。

所以我想知道,我应该在控制器和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 个答案:

答案 0 :(得分:2)

您需要在网址中添加“ /”

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

答案 1 :(得分:1)

所以

首先,您需要在主视图中链接到将生成随机页面的控制器的链接,此行由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 Serie以及父类(如果存在),模型和“详细信息”页面的视图发送给我们,我将更新此答案。

答案 2 :(得分:0)

如果您有另一个名为MoviesController的控制器,建议您将锚写为

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

这意味着您想在Details内生成指向名为MoviesController的方法的链接,该方法接受名为id的参数。

答案 3 :(得分:0)

我已经更新了您的代码,请尝试以下操作:

<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>

这还将使您的链接看起来像一个实际的按钮。