Asp.net Mvc3 webgrid et la pagination

Je suis en train d'apprendre Asp.net mvc. Je sais que je suis différent des formes et j'ai besoin de changer ma façon de penser, sans doute. Mon problème est sur le webgrid . Quand j'ajoute webgrid à ma page, et cliquez sur le bouton rechercher avec Post il rend une table avec pager et ainsi de suite. Mais les liens du pager n'est pas poster forme, ils sont juste des liens et j'ai perdu toutes mes données du formulaire.

Contrôleur dispose de deux méthodes indicielles l'un est pour les obtenir et que l'autre est pour le post. Pour obtenir je ne fais rien, je viens de créer un nouveau viewmodel dans ce cas, la Recherche de classe et de jeu à la vue. Pour ma méthode post, je prends mon modèle de vue faire de la recherche et de l'ensemble rempli viewmodel de vue.

problème : webgrid rend pager que des liens et donc il va entrer à l'Index pour obtenir, mais comme il n'est pas une requête post je n'ai pas de champs de formulaire rempli et ma recherche ne va pas donner le même résultat.

Peut-être un exemple de code peut l'expliquer mieux.

Vue:

<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>

Voici Mon Controller: la Recherche se fait dans l'Index de la méthode Post et il a juste mon viewmodel de la classe.

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

Modèle de recherche de Classe est comme:

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

OriginalL'auteur adt | 2011-06-14