using
System.Collections.Specialized;
using
System.Text;
namespace
System.Web.Mvc
{
using
DotNet.Common.WebForm;
public
static
class
AspNetMvcPager
{
public
static
string
RenderPager(
this
HtmlHelper helper,
int
leftSize,
int
currentPage,
int
recordsPerPage,
int
totalCount, System.Web.HttpRequest request)
{
string
url = GenerateURL(request);
AspNetPagerControl ctrl =
new
AspNetPagerControl(currentPage, recordsPerPage, totalCount, leftSize, url);
string
pagerStr = AspNetPagerControl.RenderPager(ctrl);
return
GeneratePagerString(pagerStr);
}
public
static
string
RenderPager(
this
HtmlHelper helper,
int
leftSize,
int
currentPage,
int
recordsPerPage,
int
totalCount,
string
baseString)
{
AspNetPagerControl ctrl =
new
AspNetPagerControl(currentPage, recordsPerPage, totalCount, leftSize, baseString);
string
pagerStr = AspNetPagerControl.RenderPager(ctrl);
return
GeneratePagerString(pagerStr);
}
public
static
string
RenderStatisticPager(
this
HtmlHelper helper,
int
leftSize,
int
currentPage,
int
recordsPerPage,
int
totalCount, System.Web.HttpRequest request)
{
string
url = GenerateURL(request);
AspNetPagerControl ctrl =
new
AspNetPagerControl(currentPage, recordsPerPage, totalCount, leftSize, url);
string
pagerStr = AspNetPagerControl.RenderStatisticPager(ctrl);
return
GeneratePagerString(pagerStr);
}
public
static
string
RenderStatisticPager(
this
HtmlHelper helper,
int
leftSize,
int
currentPage,
int
recordsPerPage,
int
totalCount,
string
baseString)
{
AspNetPagerControl ctrl =
new
AspNetPagerControl(currentPage, recordsPerPage, totalCount, leftSize, baseString);
string
pagerStr = AspNetPagerControl.RenderStatisticPager(ctrl);
return
GeneratePagerString(pagerStr);
}
private
static
string
GenerateURL(System.Web.HttpRequest request)
{
StringBuilder url =
new
StringBuilder();
url.Append(request.Url.AbsolutePath);
NameValueCollection collection = request.QueryString;
string
[] keys = collection.AllKeys;
int
counter = 0;
for
(
int
i = 0; i < keys.Length; i++)
{
if
(keys[i].ToLower() ==
"pageindex"
)
{
continue
;
}
url.AppendFormat(
"{0}{1}={2}"
, (counter == 0 ?
"?"
:
"&"
), keys[i], collection[keys[i]]);
counter++;
}
return
url.ToString();
}
private
static
string
GeneratePagerString(
string
pagerStr)
{
TagBuilder builder =
new
TagBuilder(
"div"
);
builder.IdAttributeDotReplacement =
"_"
;
builder.GenerateId(System.Guid.NewGuid().ToString());
builder.InnerHtml = pagerStr;
return
builder.ToString();
}
}
}