如何将C#对象转换为int类型
我试图将movie.Id作为参数传递,我的IDE抱怨我必须进行装箱转换。我查过拳击转换,但不知道在这种情况下如何做。另外,我试图通过电影来增加和减少页面,并遇到同样的问题。错误发生在foreach循环内的锚标记内如何将C#对象转换为int类型,c#,asp.net,api,C#,Asp.net,Api,我试图将movie.Id作为参数传递,我的IDE抱怨我必须进行装箱转换。我查过拳击转换,但不知道在这种情况下如何做。另外,我试图通过电影来增加和减少页面,并遇到同样的问题。错误发生在foreach循环内的锚标记内 @using System.Collections @{ Layout = null; int IncrementPage(MovieResults movies) => movies.Page++; int DecrementPage(MovieResu
@using System.Collections
@{
Layout = null;
int IncrementPage(MovieResults movies) => movies.Page++;
int DecrementPage(MovieResults movies) => movies.Page--;
IEnumerable<MovieResults> movieResults = (IEnumerable<MovieResults>)ViewData["movies"]
Root movies = ViewData["movies"] as Root;
}
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Movie Streaming Availability App</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="css/site.css">
</head>
<body>
<header>
<div class="container">
<div class="row">
<div class="col-4">
<button type="button" asp-controller="Home" asp-action="Index" style="background: #1b6ec2">Home Page</button>
</div>
<div class="col-6">
<h1 class="text-center">Movie Streaming Availability App</h1>
</div>
<div class="dropdown col-4">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropDownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="False">Sort by Genres</button>
<div class="dropdown-menu" aria-labelledby="dropDownMenuButton">
<a class="dropdown-item" asp-controller="Movie" asp-action="GetMovies" asp-route-genreId="28">Action</a>
<a class="dropdown-item" asp-controller="Movie" asp-action="GetMovies" asp-route-genreId="12">Adventure</a>
<a class="dropdown-item" asp-controller="Movie" asp-action="GetMovies" asp-route-genreId="16">Animation</a>
<a class="dropdown-item" asp-controller="Movie" asp-action="GetMovies" asp-route-genreId="35">Comedy</a>
<a class="dropdown-item" asp-controller="Movie" asp-action="GetMovies" asp-route-genreId="80">Crime</a>
</div>
</div>
</div>
</div>
</header>
<main>
<div class="container">
<div class="row">
@foreach (var movie in movieResults)
{
<div class="col-3">
<a asp-controller="Movie" asp-action="MoviePage" asp-route-Id="@movie.Id"><img src="https://image.tmdb.org/t/p/w300/@movie.PosterPath" alt="@movie.Title"></a>
<label>@movie.Title</label>
</div>
}
</div>
</div>
</main>
<footer>
<div class="container">
<div class="row">
<div class="col-3">
<button type="button" asp-controller="Movie" asp-action="GetMovies" asp-route-page="@(new MovieResults(movies.Page), @IncrementPage(movies))">Next Page</button>
</div>
<div class="col-3">
<button type="button" asp-controller="Movie" asp-action="GetMovies" asp-route-page="@(new MovieResults(movies.Page), @DecrementPage(movies))">Previous Page</button>
</div>
<div class="col-3">
<label class="text-center">Total Number of Pages</label>
<h3 class="text-center">@(new MovieResults(movies.TotalPages),movies.TotalPages)</h3>
</div>
<div class="col-3">
<label class="text-center">Total Number of Results</label>
<h3 class="text-center">@(new MovieResults(movies.TotalResults),movies.TotalResults)</h3>
</div>
</div>
</div>
<script type="text/javascript" src="lib/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="lib/bootstrap/dist/js/bootstrap.bundle.js"></script>
<script type="text/javascript" src="~/js/site.js" asp-append-version="true"></script>
</footer>
</body>
</html>
@使用System.Collections
@{
布局=空;
int IncrementPage(MovieResults movies)=>movies.Page++;
int递减页面(MovieResults movies)=>movies.Page--;
IEnumerable movieResults=(IEnumerable)ViewData[“movies”]
Root movies=ViewData[“movies”]作为Root用户;
}
电影流媒体可用性应用程序
主页
电影流媒体可用性应用程序
按体裁分类
行动
冒险
动画
喜剧片
罪行
@foreach(电影结果中的var电影)
{
@电影,片名
}
下一页
上一页
总页数
@(新MovieResults(movies.TotalPages)、movies.TotalPages)
结果总数
@(新的MovieResults(movies.TotalResults)、movies.TotalResults)
只有在确定对象包含整数的情况下,才能对此进行转换,否则将引发运行时转换错误异常
对于razor@((int)Model.Integer)
,对于codeint IncrementPage(MovieResults movies)=>((int)movies.Page)+代码>
在没有实际需要的情况下强制转换对象从来都不是一个好主意,特别是在foreach循环中,因为装箱/取消装箱使用了大量的资源。我认为,最好的方法是调整您的模型以反映“前端”需求,并避免放映什么类型的movie.Id
?它是一个字符串
还是一个作为对象
返回的int
?哦,很抱歉我忘了提到它是一个intMy,因为我看错了地方,但是在asp route Id=“@movie.Id”
中没有装箱转换。如果将int
分配给对象
,将自动发生装箱转换。