2010-11-01 6 views
0

Dans mon projet de forum, j'ai une vue partielle (.ascx) qui est utilisée pour ajouter un nouveau message de forum. Les publications du forum sont diffusées dans les rubriques (catégories) et les deux colonnes ont une colonne nommée Title.Html.TextBox ("Titre") dans la vue partielle (.ascx) obtient la valeur "Titre" du parent Voir

Maintenant, le problème est que lorsque je place la vue partielle sur une page de sujet, elle saisit automatiquement la valeur de titre de la rubrique, remplissant ainsi ma zone de texte de titre avec le Topic Title. Pas idéal!

Le code intérieur du CreatePost.ascx est tout simplement

<label for="Title">Title</label> 
<%= Html.TextBox("Title") %> 

J'ai essayé de changer cela à <%= Html.TextBox("Post.Title") %> mais la valeur ne Textbox pas publié.

Est-ce un comportement normal, et y a-t-il un moyen de m'en débarrasser sans l'effacer avec Javascript?

J'ai même essayé de définir une valeur en utilisant la 2ème surcharge Html.TextBox("Title", "some value") mais cela est simplement surchargé.

Aidez-nous!

Répondre

2

Si vous utilisez ASP.NET MVC 2, vous devriez toujours utiliser fortement des aides typés qui gérer correctement la liaison:

<%= Html.TextBoxFor(x => x.Category.Title) %> 
+0

C'est celui @Darin, merci beaucoup! – Marko

0

Effectuez les opérations suivantes:

CreatePost.ascx

<label for="Title">Title</label> 
    <%= Html.TextBox("Title") %> 

YourController.cs

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult CreatePost(string Title) { 
    // do something with Title 
    return View(); 
} 

devez vous assurer CreatePost.ascx est rendu entre

<% using (Html.BeginForm()) { %>.... 
    .. 
    <% Html.RenderPartial("CreatePost.ascx"); 
    .. 
    .. 
<% } > 

dans votre vue.

Hope this helps ...

+0

Salut @John, je l'ai déjà la configuration ActionResult et je ne peux pas faire grand chose avec le titre à l'intérieur. Je réussis à obtenir la valeur dans ActionResult, c'est le fait qu'il est rempli sur la page qui pose problème. De plus, j'ai déjà Html.BeginForm() dans ma vue partielle, dois-je en enrouler un autour? – Marko

+0

Non, vous n'avez pas à faire l'emballage. Essayez quelque chose comme <% = Html.TextBox ("Title", Model.Post.Titre)%> – john

0

Il semble que le problème est avec le code que vous utilisez pour rendre la vue partielle. RenderPartial sera le passage par défaut du modèle à partir de la vue parente, d'où le comportement que vous voyez lorsque le titre du sujet est affiché dans le partiel. Vous pouvez cependant passer outre - l'un des paramètres de RenderPartial vous permet de passer un nouveau modèle.

Quelque chose comme:

<% Html.RenderPartial("CreatePost.ascx", new Post());%> 

pour passer dans un nouveau modèle à la vue partielle (dans ce cas un poste vide).

Questions connexes