如何根据他的ID将超链接放置到另一个页面?

时间:2019-05-24 08:11:03

标签: c# asp.net-mvc razor

因此,我是mvc的新手,并且一直停留在这里。我想创建一个超链接,以便当我单击电影名称时,它会转到一个包含详细信息的详细信息页面。我已经有@ HTML.ActionLink到控制器中的Details类,但是现在我不知道在Details类中放什么。我应该在Index类中创建一个变量进行比较吗?

这是班级索引:

public ActionResult Index()
    {
        PAPEntities db = new PAPEntities();

        MovieViewModel[] movies = db.MoviesData.Select(movie => new MovieViewModel
        {
            MovieID = movie.MovieID,
            MovieName = movie.MovieName,
            MovieDescription = movie.MovieDescription,
            MovieCategory = movie.MovieCategory,
            MovieYear = movie.MovieYear
        }).ToArray();

        return View(movies);

    }

这是带有@ HTML.ActionLink的索引的一部分:

@foreach (var item in Model)
    {
        <tr>
            <td>@Html.ActionLink(item.MovieName, "Details", "Movies", new { id = item.MovieID }, null)</td>
            <td>@item.MovieCategory</td>
            <td>@item.MovieYear
            <td>@item.MoviePrice</td>
        </tr>
    }
</table>

我尝试搜索它,但是没有出现类似现象,所以我有点卡住了

3 个答案:

答案 0 :(得分:1)

我认为您正在使用asp.net内核?如果是这样,您应该使用标签助手

在_ViewImports.cshtml

中添加以下内容
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

然后在页面中显示以下内容

<a id="btn" asp-controller="Movies" asp-action="Details" asp-route-id="@item.MovieID">@item.MovieName</a>

答案 1 :(得分:0)

我认为您使classmethod感到困惑。
您发布的代码是该类Index上的方法MoviesController
这行

<td>@Html.ActionLink(item.MovieName, "Details", "Movies", new { id = item.MovieID }, null)</td>

在控制器Details中创建到动作Movies的链接,并向其传递ID。

因此,您需要在类MoviesController中使用方法Details并使用名为id的参数来获取并使用它。

public class MoviesController: Controller
{
    // code of other methods

    public ActionResult Details(int id)
    {
        // get details of movie with id
    }
}

旁注:如果在ActionLink控制器返回的视图中使用Movies,则无需再次指定控制器即可编写

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

它将执行相同的操作。

答案 2 :(得分:0)

如果@Html.ActionLink是要命中Details控制器的Movies方法的,那么您说:

  

我已经有@ HTML.ActionLink到控制器中的Details类,但是现在我不知道要在Details类中放置什么

为此,我建议在“电影”控制器中添加这样的“详细信息”方法:

public ActionResult Details(string id)   // might be 'int' if your MovieId is of integer type
{
    //use LINQ to fetch the movie based on input 'id'

    //return the information with the 'details' view as you did with the 'Index' method
}

希望我正确地回答了你的问题。