提问者:小点点

如何在cshtml视图中使用Asp.NET核心MVC中的变量?


我正在从.NET Framework迁移到.NET 5.0,并且我正在尝试使用Razor视图中的变量,就像普通的asp MVC一样,@page变量中存在语法错误

错误:“@page”指令必须位于Razor文件中定义的所有其他元素之前。

错误:“page”指令必须出现在行的开头。

错误:“page”指令值必须用空格分隔。

代码:

@for (var page = Model.Pager.StartPage; page <= Model.Pager.EndPage; page++)
 {
       if (page == Model.Pager.CurrentPage)
       {
         <li class="active"><span style="line-height:20px">@page</span> </li>
       }
       else
       {
        <li><a href="@Url.Action("Index","Blogs",new { page = @page,pageSize=10 })">@page</a></li>
       }
  }

共2个答案

匿名用户

对于razor pages,@Page是一个保留字,应该在第一行。您不应将其用于自定义代码:

因此,像这样重写代码:

@page

..... your html

@for (var pg = Model.Pager.StartPage; pg <= Model.Pager.EndPage; pg++)
 {
       if (pg == Model.Pager.CurrentPage)
       {
         <li class="active"><span style="line-height:20px">@pg</span> </li>
       }
       else
       {
        <li><a href="@Url.Action("Index","Blogs",new { pg = @pg , pageSize=10 })">@pg</a></li>
       }
  }

匿名用户

使用simple page或@(page)代替@page,错误将被解决。