【发布时间】:2017-10-27 01:19:37
【问题描述】:
我有一个表,它有可排序的标题、分页(使用PagedList)和带有提交按钮的过滤器(使用HtmlForm Get)。使用任何过滤器,或单击标题或页码应该查询获取并使用相同的查询字符串更新表。但是,我有一个问题:
标题和页面是操作链接,过滤器本身是使用@Html.TextBox、DropDownList 等创建的...并有一个提交按钮
在我的ActionLink 中,我需要能够传递所有参数,包括当前在过滤器表单中的值:
@Html.ActionLink("< Prev", "Index",
new {Value1 = (Value in TextBox),
Value2 = ViewBag.Something,
Value3 = ect...})
并且,还有一个过滤器的提交按钮,如果按下该按钮,我需要能够从我的 Viewbag 中将附加信息添加到查询字符串中,该查询字符串包含排序标题值并需要从带有页码的模型。
还有什么可以做我想做的事吗?
(我曾考虑将提交按钮从输入变为操作链接,但我仍然不知道如何从Html.TextBox 等中获取当前值)...
编辑
我创建了一个新的过滤器对象,现在我将其作为参数发送到我的控制器。但是,我有一些用于表格标题和页面的操作链接。我不知道如何在单击过滤器对象时更改它们,而无需为控制器中的每个标题和页面按钮创建操作。这甚至是个坏主意吗?例如:
ActionResult NextPage(Filter filter);...
ActionResult Header1(Filter filter);...
...
如果我不这样做...我不知道如何知道用户单击了哪个操作链接...而且我不能使用 routedatadictionary 因为我只能发送我的过滤器对象,或者一堆参数不是两者都...
另一个想法是发送所有过滤器模型的属性,加上字符串查询中的链接名称,然后在控制器中重建过滤器...
【问题讨论】:
-
你在视图中使用什么模型?
-
Atm,模型只保存填充表格的值。并且不包含任何过滤器、排序或任何其他数据,尽管我可以修改它来执行此操作。如果我将它添加到模型中......我需要能够使用操作链接传递模型,我认为这是不可能的,还是我错了?
-
通过模型并非不可能,您可以包含其他字段,尽管我认为应该分开关注点。您可以制作一种接受数据模型作为参数的网格模型。我同意 Brent Echols 的观点,其中包含用于排序和页码的隐藏输入字段。
标签: asp.net asp.net-mvc-3 razor