使用 MVC EF。
我正在尝试让多选列表与 PagedListPager 一起使用。问题是将数组从控制器返回到视图,然后正确渲染该数组,以便控制器将参数识别为数组。
因此,天真的第一次尝试是在 ViewBag 中传递数组。但是,当将其放入 PagedListPager 中时,它会呈现为数组对象的指针或描述符。
@Html.PagedListPager(Model, page => Url.Action("DoStuff", new { page, FilterArray = ViewBag.FilterArray})
呈现为:
<a href="/MyPage?page=2&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&FilterArray=45690%FilterArray%3D50247%FilterArray%3D22>2</a>
我希望 Html.Raw 会按原样使用字符串,但没有这样的运气。如果我在控制器中构建该字符串并将其通过 ViewBag 传递,也会发生同样的情况。
几周前我们在另一个页面中所做的,我们需要“导出到 XLS”按钮来具有相同的过滤器。在那里我们捕获了 onclick 事件并自己构建了 url。丑陋,但它有效。
问题在于 PagedListPager 不会为页码按钮提供 id,因此很难捕获该事件。我已经开始在封闭的 div 上放置一个 id。但我在弦乐版本上被拉下来了。
所以,这就是我现在的处境。获取 onclick 事件是实现此目的的唯一方法吗?一个细微的变化是在 document.ready 中查找按钮并在那里重写 url。甚至可能比抓住 onclick 更难看。
嗯。我的同事正在尝试一种变体,他捕获下拉列表的 onchange,以便他可以将数字放入字符串中。然后,他将信息作为字符串与数组一起传递。我们保留数组,因为它适用于原始的提交按钮。
我们是否缺少一个更简单、更强大的解决方案?
我们怎么忽视了这一点。
我能够创建一个逗号分隔的字符串并将其作为字符串参数传递。污垢简单