当我选择PagedList<T>
的任何页面时,[HttpGet]
方法已激活。因此,我无法使用Request.Form.GetValues()
。
我刚看到Request
变量进入即时窗口并意识到我没有看到任何我想要的ID值(请求不会给我任何屏幕ID的任何值,因为我没有使用post方法)。
我有一个网格(表格),每个记录的一个字段是一个复选框,在分页后,我需要知道哪个复选框已启用以保持其检查(我已经制作了代码以保持检查,我只需要知道我将如何检查这些复选框是否被检查。
我也已经知道他们的身份证。
我使用以下控件生成这些复选框:
//foreachloop
<%: Html.CheckBox(item.ID.ToString(), item.isChecked)%>
对于我的分页,我使用以下内容:
.aspx的: &lt;%:Html.Pager(Model.ListaGridPaginada)%&gt;
此寻呼机是一个调用以下内容的重载:
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
答案 0 :(得分:0)
我认为如果你将它包装在一个表单中并将方法设置为GET,那么它应该将所有表单值传递给查询字符串。像这样:
using (Html.BeginForm("Controller", "Action", FormMethod.Get))
{
// grid in here
//foreachloop
<%: Html.CheckBox(item.ID.ToString(), item.isChecked)%>
<input type="submit" value="Save" />
}
单击“提交”按钮时,查询字符串将如下所示:
Action?ID1=false&ID2=true&ID2=false
其中,您将查看查询字符串以确定复选框ID是否包含true。看看ID1 = false,但ID2是真还是假?这意味着ID1未经检查,但ID2已被检查。
Request.QueryString["ID2"].Contains("True")
如果这对您不起作用,您可以通过将检查状态置于隐藏值并传递它来跟踪使用javascript检查的复选框。
这对你有帮助吗?