2009-07-27 1 views
1

Je vais re-poser cette question d'une manière légèrement différente. Dites que j'ai deux ou plus de la même vue partielle sur la page.Json et Multiple PartialViews

Sur cette vue partielle, il y a une zone de texte et un bouton.

Sur le clic du bouton je dois prendre le contenu de la zone de texte et faire un postback JSON, faire quelques trucs et renvoyer un jeu de résultats. Le problème que j'ai est que je peux tout faire pour le 1er PartialView mais pas pour les suivants.

L'événement est attaché à chacun des boutons, mais lorsque j'essaie d'accéder à la zone de texte, je ne vois que la première zone de texte et non celle qui est dans la vue partielle avec le bouton.

Dans le code ci-dessous, j'ai deux fois la vue partielle. Donc deux instances de la zone de texte et le bouton. Le code Json est attaché à chaque bouton de soumission, mais lorsque j'accède à la zone de texte, je reçois uniquement le texte de la première vue partielle.

Un peu de code;

Vue partielle:

<%= Html.TextArea("MyTextBox", Model.Text, 3, 50, new { onkeyDown="return CheckInputLength(this)" })%> 
<input id="submitText" name="submitText" type="submit" value="Add text" class="clsTest" /> 

Une partie du code JSON:

$(document).ready(function() { 
    $(".clsTest").each(
function() { 

    $(this).unbind("click").click(function(evt) { 
var commentText = jQuery.trim($("#MyTextBox").val()); 

Répondre

1

Eh bien, le problème est que vous avez plus d'un textarea avec le même ID (MyTextBox). Assurez-vous que vos zones de texte ont des ID différents.

<%= Html.TextArea("MyTextBox", Model.Text, 3, 50, 
    new { onkeyDown="return CheckInputLength(this)", 
    id = "textBox-" + Model.ID })%> 

Alors, ce que je suggère est que vous avez une fonction JS qui prend en paramètre l'ID du textarea:

function postComment(id) { 
    var commentText = jQuery.trim($(id).val()); 
} 

et vous avez votre soumettre appeler des boutons fonction:

<input id="submitText" name="submitText" type="submit" value="Add text" 
    class="clsTest" onclick="postComment('textBox-<%=Model.ID%>')" /> 
+0

Merci çağdaş. Je vais essayer ça ce soir. Je savais que ça devait être quelque chose de très simple. – griegs