多选列表与 Html 助手 PagedListPager

问题描述 投票:0回答:1

使用 MVC EF。

我正在尝试让多选列表与 PagedListPager 一起使用。问题是将数组从控制器返回到视图,然后正确渲染该数组,以便控制器将参数识别为数组。

因此,天真的第一次尝试是在 ViewBag 中传递数组。但是,当将其放入 PagedListPager 中时,它会呈现为数组对象的指针或描述符。

@Html.PagedListPager(Model, page => Url.Action("DoStuff",  new { page, FilterArray =  ViewBag.FilterArray})

呈现为:

<a href="/MyPage?page=2&amp;FilterArray=System.Int64%5B%5D">2</a>

换句话说,它渲染数组对象的描述,而不是渲染各个数组元素。

一位同事建议使用 Join 构建字符串:

@Html.PagedListPager(Model, page => Url.Action("DoStuff",  new { page, FilterArray = Html.Raw(string.Join("&FilterArray =", ViewBag.FilterArray )})

但是,特殊字符被转义,控制器放弃并只是说它是空的

<a href="/MyPage?page=2&amp;FilterArray=45690%FilterArray%3D50247%FilterArray%3D22>2</a>

我希望 Html.Raw 会按原样使用字符串,但没有这样的运气。如果我在控制器中构建该字符串并将其通过 ViewBag 传递,也会发生同样的情况。

几周前我们在另一个页面中所做的,我们需要“导出到 XLS”按钮来具有相同的过滤器。在那里我们捕获了 onclick 事件并自己构建了 url。丑陋,但它有效。

问题在于 PagedListPager 不会为页码按钮提供 id,因此很难捕获该事件。我已经开始在封闭的 div 上放置一个 id。但我在弦乐版本上被拉下来了。

所以,这就是我现在的处境。获取 onclick 事件是实现此目的的唯一方法吗?一个细微的变化是在 document.ready 中查找按钮并在那里重写 url。甚至可能比抓住 onclick 更难看。

嗯。我的同事正在尝试一种变体,他捕获下拉列表的 onchange,以便他可以将数字放入字符串中。然后,他将信息作为字符串与数组一起传递。我们保留数组,因为它适用于原始的提交按钮。

我们是否缺少一个更简单、更强大的解决方案?

arrays model-view-controller razor multi-select
1个回答
0
投票

我们怎么忽视了这一点。

我能够创建一个逗号分隔的字符串并将其作为字符串参数传递。污垢简单

© www.soinside.com 2019 - 2024. All rights reserved.