Getting form values with MvcPager

做~自己de王妃 提交于 2020-01-07 02:37:09

问题


When I select any page of my PagedList<T> the [HttpGet]method is activated. Because of this, Im not able to use Request.Form.GetValues().

I just saw the Requestvariable into the immediate window and realized that I dont see any value that I want from the IDs that I have ( the request dont bring me any value of any ID of the screen, since Im not using the post method).

I got a grid (table) and one field of each record is a checkbox, after the pagination, I need know wich checkbox is enabled to keep it checked ( I already made the code to keep it checked, I just need to know how Im going to see if those checkboxes are checked.

I already know their ID too.

Im using the following control to generate those checkboxes:

//foreachloop 
<%: Html.CheckBox(item.ID.ToString(), item.isChecked)%>

For my pagination, Im using the following:

Aspx: <%: Html.Pager(Model.ListaGridPaginada)%>

This pager is a overload that calls the following:

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

I call the method wich constructs this variable with the following parameters:

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

This pagerHelper is from Webdiyer


回答1:


I think if you wrap it in a form and you set the method to GET, then it should pass in all of your form values into the query string. Something like this:

using (Html.BeginForm("Controller", "Action", FormMethod.Get))
{
    // grid in here
    //foreachloop 
    <%: Html.CheckBox(item.ID.ToString(), item.isChecked)%>
    <input type="submit" value="Save" />
}

When you click the submit button, your query string will look something like this:

Action?ID1=false&ID2=true&ID2=false

Which, you'll look at the query string to determine if the checkbox ID contains true. See how ID1=false, but ID2 is true and false? That means ID1 was unchecked, but ID2 was checked.

Request.QueryString["ID2"].Contains("True")

If that doesn't work for you, you could keep track of which checkboxes are checked with javascript by putting their checked state in a hidden value and passing that around.

Does that help any?



来源:https://stackoverflow.com/questions/8465606/getting-form-values-with-mvcpager

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!