因此,我是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>
我尝试搜索它,但是没有出现类似现象,所以我有点卡住了
答案 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)
我认为您使class
和method
感到困惑。
您发布的代码是该类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
}
希望我正确地回答了你的问题。