Je dispose du code suivant dans mon HomeController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using MyApplication.Models;
namespace MyApplication.Controllers
{
public class HomeController : Controller
{
private NewsDBEntities _db = new NewsDBEntities();
//
// GET: /Home/
public ActionResult Index()
{
return View(_db.ArticleSet.ToList());
}
//
// GET: /Home/Details/5
public ActionResult Details(int id)
{
//return View();
var ArticleToView = (from m in _db.ArticleSet
where m.storyId == id
select m).First();
return View(ArticleToView);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(String query)
{
var ArticleQuery = (from m in _db.ArticleSet
where m.headline.Contains(query)
select m).First();
return View(ArticleQuery);
//return RedirectToAction("Search");
}
}
}
Dans mon dossier de vues sous Home/Index.aspx, j'ai un formulaire de recherche simple comme suit :
<% using (Html.BeginForm()) {%>
Recherche
Mots-clés:
<%= Html.TextBox("query") %>
<% } %>
L'idée est que lorsque l'utilisateur soumet ce formulaire, le contenu de la zone de texte de requête sera utilisé puis vérifié par rapport au titre d'un article provenant de ma base de données et la vue Index, au lieu de montrer tous les articles, montrera uniquement ceux qui correspondent à la requête tapée par l'utilisateur.
Lorsque je soumets le formulaire, j'obtiens l'erreur suivante :
L'élément de modèle passé dans le dictionnaire est de type 'MyApplication.Models.Article' mais ce dictionnaire requiert un élément de modèle de type 'System.Collections.Generic.IEnumerable`1[MyApplication.Models.Article]'.
Qu'est-ce que j'ai mal fait ici ? Car de ce que je peux comprendre, le code est correct.