Вы можете использовать xsd, как предложено Дарином.
В дополнение к этому рекомендуется отредактировать файл test.xsd для создания более разумной схемы.
type="xs:string"
можно изменить на type="xs:int"
для целочисленных значений minOccurs="0"
можно изменить на minOccurs="1"
, где требуется поле maxOccurs="unbounded"
, можно изменить на maxOccurs="1"
, где разрешен только один элемент
Вы могут создавать более продвинутые xsd-s, если вы хотите еще раз подтвердить свои данные, но это, по крайней мере, даст вам разумные типы данных в сгенерированном c #.
Ну, каков источник данных? Ваше действие могло взять, некоторые приняли значение по умолчанию, аргументы, т.е.
ActionResult Search(string query, int startIndex, int pageSize) {...}
приняли значение по умолчанию в установке маршрутов так, чтобы startIndex был 0, и размер страницы (говорят) 20:
routes.MapRoute("Search", "Search/{query}/{startIndex}",
new
{
controller = "Home", action = "Search",
startIndex = 0, pageSize = 20
});
Для разделения канала можно использовать LINQ довольно легко:
var page = source.Skip(startIndex).Take(pageSize);
(или делают умножение при использовании "pageNumber", а не "startIndex")
С LINQ-toSQL, EF, и т.д. - это должно "сочинить" вниз к базе данных, также.
необходимо тогда быть в состоянии использовать ссылки действия на следующую страницу (и т.д.):
<%=Html.ActionLink("next page", "Search", new {
query, startIndex = startIndex + pageSize, pageSize }) %>
Я имел ту же проблему и нашел очень изящное решение для Класса Пейджера от
http://blogs.taiga.nl/martijn/2008/08/27/paging-with-aspnet-mvc/
В Вашем контроллере, на который похож вызов:
return View(partnerList.ToPagedList(currentPageIndex, pageSize));
и в Вашем представлении:
<div class="pager">
Seite: <%= Html.Pager(ViewData.Model.PageSize,
ViewData.Model.PageNumber,
ViewData.Model.TotalItemCount)%>
</div>