Asp.net Mvc3 webgrid и пейджинг

Я пытаюсь изучить Asp.net mvc. Я знаю, что это отличается от форм, и мне, наверное, нужно изменить свой образ мышления. Моя проблема связана с сеткой. Когда я добавляю сетку на свою страницу и нажимаю кнопку поиска с помощью Post, она отображает таблицу с помощью пейджера и так далее. Но ссылки на пейджере - это не форма для отправки, это просто ссылки, и я потерял все данные своей формы.

Контроллер имеет два метода индекса: один для получения, а другой для публикации. Для получения я ничего не делаю, я просто создаю новую модель просмотра, в этом случае класс поиска и устанавливаю ее для просмотра. Для моего метода публикации я беру свою модель просмотра, выполняю поиск и устанавливаю заполненную модель просмотра для просмотра.

проблема: webgrid отображает пейджер в виде ссылок, поэтому он войдет в индекс для получения, но, поскольку это не почтовый запрос, у меня нет заполненных полей формы, и мой поиск не даст тот же самый набор результатов.

Возможно пример кода может объяснить это лучше.

View:

<form action="" method="post">

Esas no : @Html.TextBoxFor(x=>x.Name)
Yil : @Html.TextBoxFor(x=>x.Year)

<input type="submit" value="Search" />

<hr />
@ViewBag.Message
<hr />

@{ var grid = new WebGrid(Model.Results,rowsPerPage:5);}

@grid.GetHtml(tableStyle:"table",htmlAttributes:new {id="tbl"} )

</form>

Вот мой контроллер: поиск происходит в методе Index Post, и он имеет только мой класс viewmodel.

    private ISearchContext _sc;

    public  MyController(ISearchContext sc)
    {
        _dc = dc;
    }

    //
    // GET: /Dava/

    public ActionResult Index()
    {
        var search = new Search();
        ViewBag.Message = "";
        return View(search);
    }

    [HttpPost]
    public ActionResult Index(Search search)
    {

        Search sres = _dc.SearchFromRepository(search);
        ViewBag.Message = String.Format("Count:{0} ",sres.Results.Count);
        return View(sres);
    }

Search model Class is like:

public class Search
{
    public int Year { get; set; }
    public string Name { get; set; }


    public IList<Item> Results { get; set; }

    public Search()
    {
        Results = new List<Item>();
    }
}
10
задан adt 14 June 2011 в 13:08
поделиться