2009-12-22 3 views
0

J'ai une page qui liste tous mes articles (Articles/List.aspx).Asp.Net MVC - RenderPartial - Créer dans une vue de liste

J'ai également obtenu un contrôle qui crée un article (Article/Create.ascx).

Je vais aimer que ma page List.aspx qui rend le Create.ascx pour pouvoir créer un article.

Je sais que dans MVC, l'approche préférée est une page par action. Mais dans ce cas, je dois le faire. C'est un problème de conception et la façon dont le client souhaite que le site Web fonctionne.

Donc pour l'instant, je me suis le code suivant dans List.aspx:

<% Html.RenderPartial("Create", new Domain.Models.Article()); %> 

qui rendent correctement. Mais quand j'appuie sur le bouton de création, cela ne va pas dans la méthode Create [post] de mon articleController.

Une idée de pourquoi et comment je pourrais résoudre ce problème?

Répondre

1

Si vous rencontrez des problèmes avec le bouton, cela n'aura rien à voir avec la façon dont vous contrôlez l'utilisateur. Nous devons voir le balisage de formulaire que le bouton est à l'intérieur, qui montrera quel est le problème le plus probable.

Mais juste pour la référence, vous êtes probablement faire quelque chose comme ceci:

<% using (Html.BeginForm("Create", 
    ViewContext.RouteData.Values["Controller"].ToString())) { %> 

    your control markup here 

<% } %> 
+0

Le problème est pas avec le bouton, parce que si je mets tout mon code dans une page standard Create.aspx (au lieu d'un contrôle), c'est du travail. Mais, votre droite, votre code est ce que je cherchais. J'apprécie votre réponse rapide et bonne! – Melursus

+0

@Melursus Le problème n'est probablement pas le bouton, c'est la forme dans laquelle se trouve le bouton. Dans un contrôle, vous devez savoir quel contrôleur utiliser, ce qui peut être ou ne pas être ce que vous attendez. C'est pourquoi j'ai inclus ViewContext.RouteData.Values ​​["Controller"]. Cela fait référence au contrôleur qui construit le contrôle utilisateur depuis l'intérieur de la page. De cette façon, vous savez que vous obtenez le contrôleur dont il a été appelé. – Joseph

+0

Merci pour la clarification! Ça m'aide à mieux comprendre! – Melursus

Questions connexes