Я пытаюсь изучить 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>();
}
}