当我选择PagedList<T>
的任何页面时,[HttpGet]
方法都会被激活。正因为如此,我无法使用Request.Form.GetValues()
。
我只是在“即时”窗口中看到了Request
变量,并意识到从我拥有的ID中看不到任何我想要的值(请求不会给我带来任何屏幕ID的值,因为我没有使用post方法)。
我得到了一个网格(表),每个记录的一个字段是一个复选框,分页后,我需要知道哪个复选框被启用以保持选中(我已经编写了代码来保持选中,我只需要知道如何查看这些复选框是否被选中)。
我也已经知道他们的身份了。
我正在使用以下控件来生成这些复选框:
//foreachloop
<%: Html.CheckBox(item.ID.ToString(), item.isChecked)%>
对于我的分页,我使用以下内容:
Aspx:<%:Html.Pager(Model.ListaGridPaginada)%>
此寻呼机是一个重载,它调用以下内容:
public static MvcHtmlString Pager(this HtmlHelper helper, int totalPageCount, int pageIndex, string actionName, string controllerName,
PagerOptions pagerOptions, string routeName, RouteValueDictionary routeValues, IDictionary<string, object> htmlAttributes)
{
var builder = new PagerBuilder
(
helper,
actionName,
controllerName,
totalPageCount,
pageIndex,
pagerOptions,
routeName,
routeValues,
htmlAttributes
);
return builder.RenderPager();
}
我使用以下参数调用构造此变量的方法:
public static MvcHtmlString Pager<T>(this HtmlHelper helper, PagedList<T> pagedList)
{
if (pagedList == null)
return Pager(helper,null, null);
return Pager(helper, pagedList.TotalPageCount, pagedList.CurrentPageIndex, null, null, null,null, null,null);
}
此pagerHelper来自Webdiyer
发布于 2011-12-11 18:17:59
我认为如果您将它包装在一个表单中,并将方法设置为GET,那么它应该将所有表单值传递到查询字符串中。如下所示:
using (Html.BeginForm("Controller", "Action", FormMethod.Get))
{
// grid in here
//foreachloop
<%: Html.CheckBox(item.ID.ToString(), item.isChecked)%>
<input type="submit" value="Save" />
}
当您单击submit按钮时,查询字符串将如下所示:
Action?ID1=false&ID2=true&ID2=false
其中,您将查看查询字符串以确定checkbox ID是否包含true。看到ID1=false,但是ID2是对和错了吗?这意味着未选中ID1,但选中了ID2。
Request.QueryString["ID2"].Contains("True")
如果这对你不起作用,你可以通过将复选框的选中状态放在一个隐藏值中并传递它来跟踪哪些复选框被javascript选中。
这有帮助吗?
https://stackoverflow.com/questions/8465606
复制