如何将C#对象转换为int类型

如何将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

我试图将movie.Id作为参数传递,我的IDE抱怨我必须进行装箱转换。我查过拳击转换,但不知道在这种情况下如何做。另外,我试图通过电影来增加和减少页面,并遇到同样的问题。错误发生在foreach循环内的锚标记内

@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)
,对于code
int IncrementPage(MovieResults movies)=>((int)movies.Page)+


在没有实际需要的情况下强制转换对象从来都不是一个好主意,特别是在foreach循环中,因为装箱/取消装箱使用了大量的资源。我认为,最好的方法是调整您的模型以反映“前端”需求,并避免放映什么类型的
movie.Id
?它是一个
字符串
还是一个作为
对象
返回的
int
?哦,很抱歉我忘了提到它是一个intMy,因为我看错了地方,但是在
asp route Id=“@movie.Id”
中没有装箱转换。如果将
int
分配给
对象
,将自动发生装箱转换。