2014-07-10 1 views
0

J'ai démarré un projet ASP.NET MVC 4. J'ai un problème pour communiquer entre View et Controller avec mon modèle. Je sais comment envoyer une liste à la vue mais je veux récupérer ce modèle de la vue pour l'envoyer au contrôleur.ASP.NET MVC 4 Envoyer un modèle - Afficher au contrôleur

Dans mon contrôleur:

public ActionResult Index() 
    { 
     List<ApplicationModel> listAppli = ApplicationModel.GetListApplications(); 
     return View(listAppli); 
    } 


    public ActionResult Delete(ApplicationModel app) 
    { 
     ApplicationModel.DeleteApplication(app); 
     return RedirectToAction("Index"); 
    } 

Et mon avis est une liste. Je veux récupérer le modèle correspondant à la ligne quand je supprime/Details/Edit.

@model IEnumerable < Activate.Models.ApplicationModel> 

@foreach (var item in Model) { 
<tr> 
    <td> 
     @Html.DisplayFor(modelItem => item.Code) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.Name) 
    </td> 
     @Html.ActionLink("Edit", "Edit", new { id=item }) | 
     @Html.ActionLink("Details", "Details", new { id=item }) | 
     @Html.ActionLink("Delete", "Delete", new{ id=item }) 
    </td> 
</tr> 
} 

Dans mon ActionLink, je veux juste envoyer l'objet « objet », mais l'élément envoyer l'événement est un nouvel élément qui ne correspond pas à la ligne.

Est-ce une erreur dans mon code ou je dois utiliser une autre façon? Comme un autre outil pour créer des liens entre View et Model qui permet d'envoyer des objets dans les paramètres?

Merci.

Mon ApplicationModel est comme:

public ApplicationModel(ApplicationModel app) 
    { 
     Id = app.Id; 
     Code = app.Code; 
     Name = app.Name; 
    } 
+0

Essayez de changer l'élément à l'application, je ne vois pas d'éléments dans votre modèle ... – Izekid

+0

Comme ça: @ Html.ActionLink ("Supprimer", "Supprimer", nouveau {app = item}? – user3820903

+0

Ouais sinon je suis perdu .... – Izekid

Répondre

0

Vous ne pouvez pas poster un modèle en tant que paramètre. Au lieu de cela, vous devriez essayer d'envoyer l'identifiant à votre contrôleur, puis obtenir le modèle à partir de la base de données.

+0

Je l'ai changé avec "id = item" et avec un param "ApplicationModel id" mais il envoie toujours une nouvelle instance de ApplicationModel – user3820903

+0

Ok, je vais le faire avec l'id mais n'est-il pas préférable de communiquer avec objet? Avec l'objet, je n'aurais pas à le rechercher tout le temps dans la base de données ... – user3820903

Questions connexes