Asp.net mvc 使用MvcPager获取表单值

Asp.net mvc 使用MvcPager获取表单值,asp.net-mvc,asp.net-mvc-2,c#-4.0,Asp.net Mvc,Asp.net Mvc 2,C# 4.0,当我选择页面列表的任何页面时,[HttpGet]方法被激活。因此,我无法使用Request.Form.GetValues 我只是在即时窗口中看到Requestvariable,并意识到我没有看到任何我想要的ID值,我有请求,没有给我屏幕上任何ID的任何值,因为我没有使用post方法 我得到了一个网格表,每个记录的一个字段是一个复选框,分页后,我需要知道哪个复选框被启用以保持选中我已经做了代码以保持选中,我只需要知道我将如何查看这些复选框是否被选中 我也知道他们的身份证了 Im使用以下控件生成这些

当我选择页面列表的任何页面时,[HttpGet]方法被激活。因此,我无法使用Request.Form.GetValues

我只是在即时窗口中看到Requestvariable,并意识到我没有看到任何我想要的ID值,我有请求,没有给我屏幕上任何ID的任何值,因为我没有使用post方法

我得到了一个网格表,每个记录的一个字段是一个复选框,分页后,我需要知道哪个复选框被启用以保持选中我已经做了代码以保持选中,我只需要知道我将如何查看这些复选框是否被选中

我也知道他们的身份证了

Im使用以下控件生成这些复选框:

//foreachloop 
<%: Html.CheckBox(item.ID.ToString(), item.isChecked)%>
对于我的分页,我使用以下命令:

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();
    }
Aspx:

此寻呼机是调用以下内容的重载:

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);
    }

此页面LPER来自

我认为,如果将其包装在表单中并设置要获取的方法,那么它应该将所有表单值传递到查询字符串中。大概是这样的:

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是true还是false?这意味着ID1未被选中,但ID2已被选中

Request.QueryString["ID2"].Contains("True")
如果这对您不起作用,您可以跟踪哪些复选框被javascript选中,方法是将它们的选中状态放在一个隐藏值中并传递给其他人


这有帮助吗?

谢谢你的回复,霍克。问题是我需要POST方法。将方法设置为GET会将设置的所有操作释放到post函数中。在这种情况下,我将使用隐藏字段。选中某个框后,将该框的ID添加到隐藏字段;取消选中时,删除ID。隐藏字段将作为字符串参数发布到控制器。您可以使用javascript/jquery解析隐藏字段,并在page ready事件中选中具有正确ID的复选框。