使用MvcPager获取表单值

时间:2011-12-11 16:37:35

标签: asp.net-mvc asp.net-mvc-2 c#-4.0

当我选择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

1 个答案:

答案 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检查的复选框。

这对你有帮助吗?