2009-06-01 6 views
0

j'avais une page de travail avec LINQ to SQL et maintenant je suis en train de convertir dans LINQ à l'entitécomment passer un EntityKey (référence) d'une vue sur le contrôleur

Mon projet de test contient 2 tables, contactez (id, nom, email) et commentaires (id, contactid, comment)

quand je veux créer un nouveau commentaire, j'ai mis dans la vue dans un champ caché le contactid et il a été soumis avec tout le reste sur le soumettre bouton

cela fonctionnait bien avec linq2sql mais cela ne fonctionne pas avec linq2entity

comment faire avec linq2entity?

modifier # 1

En fait, la question est, comment puis-je faire face à un ou plusieurs clé étrangère? dans ce cas, je n'en ai eu qu'un et oui je pourrais utiliser la suggestion de eu-ge-ne mais que se passe-t-il si j'en ai un second?

modifier # 2

found this solution pour l'instant

Répondre

1

Il est préférable de fournir le contactID comme une partie de l'URL. Par exemple (avec la route "par défaut"):

public CommentController : Controller 
{ 
    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Add(int id) 
    { 
     ... 
    } 
} 

Dans votre vue:

<% using (Html.BeginForm(new { 
    controller = "comment", 
    action = "add", 
    id = /* commentId from your Model */ })) { %> 
    ... 
<% } %> 

MISE À JOUR:

Si vous avez 2 ou plusieurs clés étrangères:

S1:

routes.MapRoute("CustomRoute", "{controller}/{action}/{id1}/{id2}", 
    new { controller = "home", action = "index", id1 = "", id2 = "" }); 

... 

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Add(int id1, int id2) 
{ 
    ... 
} 

... 

<% using (Html.BeginForm(new { 
    controller = "comment", 
    action = "add", 
    id1 = /* foreighn key 1 */, 
    id2 = /* foreighn key 2 */ })) { %> 
    ... 
<% } %> 

S2:

Dans la vue:

<% using (Html.BeginForm(new { controller = "comment", action = "add" })) { %> 
    ... 

    <input id="foreignKeyId1" type="hidden" value="<%= /* foreign key 1 */ %>" /> 
    <input id="foreignKeyId2" type="hidden" value="<%= /* foreign key 2 */ %>" /> 
    ... 
    <input id="foreignKeyIdN" type="hidden" value="<%= /* foreign key N */ %>" /> 
<% } %> 

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Add(FormCollection form) 
{ 
    var foreignKey1 = form["foreignKeyId1"] 
    var foreignKey2 = form["foreignKeyId2"] 
    ... 
    var foreignKeyN = form["foreignKeyIdN"] 

    ... 
} 
+0

oeil à mon modifier dans mon message original, bonne idée si je seulement 1 clé étrangère, mais si j'ai plus d'un? – Fredou

Questions connexes