【问题标题】:How to pass javascript variable into @Model function如何将javascript变量传递给@Model函数
【发布时间】: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


【解决方案1】:

对 razor 变量执行 skip take 操作。您不能使用客户端参数进行服务器端计算。

如果您的模型包含所有数据,为什么需要使用 razor 过滤掉数据?将数据分配给 JavaScript 变量,然后跳过显示结果方法。

如果您想动态加载数据而不是对该页面执行 Ajax 调用并仅使用该数据填充您的模型。之后再做第二段:)

【讨论】:

  • 假设我在视图中有整个列表,我可以在没有 ajax 的情况下将其过滤掉吗?我过滤数据的原因是因为我想在单个页面中实现分页。所以如果用户想要查看结果 10-19,用户可以转到第 2 页。
猜你喜欢
  • 2016-08-21
  • 2015-05-02
  • 2015-06-08
  • 2015-07-10
  • 1970-01-01
  • 1970-01-01
  • 2017-04-30
  • 2018-12-14
相关资源
最近更新 更多