【发布时间】:2017-11-30 23:17:41
【问题描述】:
我目前正在尝试仅显示从我的控制器方法传入的列表的某些条目,具体取决于用户从分页栏中选择的页面,如下所示
<nav aria-label="Page navigation">
<ul class="pagination">
<li class="page-item">
<a class="page-link" href="#">Previous</a>
</li>
@for (int i = 1; i <= numberOfPages; i++)
{
<li class="page-item">
<a class="page-link" href="#" onclick="showResults(@i)">@i</a>
</li>
}
<li class="page-item">
<a class="page-link" href="#">Next</a>
</li>
</ul>
<h4>
Retrieved @Model.Count() results - currently showing 10 per page
</h4>
</nav>
在某些情况下,numberOfPages 是定义为Model.Count()/10 + 1 的剃刀变量。现在我只是想从传入的列表中获取正确的元素。但是在我的 showResults 方法中,我无法在涉及 @Model 的函数中使用 javascript 变量。
<script>
function showResults(page) {
//no need to reload the current page
if (page == @currentPage){
return;
}
page = page - 1; //e.g. if user wants to go to page 1, then results gathered would be from 0 to 9
var items = @Model.Skip(page * 10).Take(10);
}
</script>
在线,var items = @Model.Skip(page * 10).Take(10);,我收到一条错误提示
名称'page'在当前上下文中不存在
我尝试过的一件事来自Javascript variable in razor ActionLink,但这里涉及replace 的答案会给我一个“未捕获的语法”错误。如果可能的话,我想以任何方式使用 javascript 变量过滤列表。
【问题讨论】:
-
您似乎不明白什么代码在客户端运行,什么代码在服务器上运行。
showResults必须进行 ajax 调用或重定向到传递新页码的视图。 -
您尝试做的事情是不可能的 - 您不能将 javascript 混合到 razor 函数中,因为 javascript 是客户端,并且 razor 是在提供页面之前编译的,因此您收到了错误。
标签: javascript asp.net asp.net-mvc razor asp.net-mvc-5