2011-03-03 6 views
0

J'ai un fichier ascx nommé searchResultPlayer. Vu le fichier i rendu ascx ci-dessus en utilisant le code suivantmise à jour partielle après publication - jquery

<div id="player"> 
    <% Html.RenderPartial("SearchResultPlayer"); %> 
    </div> 

J'utilise le code suivant jquery pour poster.

$('#resultTable tr').live('click', function (event) { 
$.post("/Search/SearchResult", { 
      content: "GetCallDetails" 
     } 
     ); 
    }); 

Le message fonctionne correctement. À partir du contrôleur je retourne un partialview.Code est illustré ci-dessous

return PartialView("SearchResutPlayer", searchModel); . 

le contrôleur retournant ce après chaque post.I peut voir que pendant le débogage.

Ma question est de savoir comment puis-je mettre à jour la valeur retournée dans la vue en utilisant jquery ?.

Je sais que je peux utiliser quelque chose comme ça

<% using (Ajax.BeginForm("SearchResult", "Search", 
         new AjaxOptions {        
          HttpMethod="POST", 
          UpdateTargetId="player",        
         })) { %> } 

Mais à cause d'un problème que je ne peux pas utiliser commencer ajax forme. Donc, dans jquery est-il quelque chose comme UpdateTargetId ???

EDIT

J'ai essayé la méthode proposée par Darin. Je écrire jquery comme ça

    $('#player').load(
       '<%= Url.Action("SearchResult", "Search") %>', 
       { content: 'GetCallDetails' } 
      ); 

Dans Voir

if (Request.IsAjaxRequest()) 
     { 
      if (content != null)     

      { 
       searchModel.selectedRecord = "test message"; 
       return PartialView("SearchResutPlayer", searchModel); 
      } 
     } 

Et dans fichier ascx

<label> <%= Html.Encode(Model.selectedRecord) %></label> 

Au départ, le Model.selected ont une valeur comme 'chargé'. Mais après ajax message Its ne change pas à « message de test »

J'ai essayé méthode suggérée par PsychoCoder too.But des thats ne fonctionnait pas

Répondre

4

Mais à cause d'un problème que je ne peux pas utiliser commencer ajax forme.

Un problème? Je n'appellerais pas cela exactement un problème . Je l'appellerais un bon design. Vous êtes un homme heureux si vous ne pouvez pas utiliser les aides Ajax.*. Personnellement, je déteste ces aides car ils transforment votre balisage en une pollution et c'est particulièrement vrai pour MVC 1 et 2.

Ainsi, dans jQuery vous avez la fonction .html() qui vous permet de définir le code HTML d'un élément donné:

$('#resultTable tr').live('click', function (event) { 
    $.post(
     '<%= Url.Action("SearchResult", "Search") %>', 
     { content: 'GetCallDetails' }, 
     function(result) { 
      $('#player').html(result); 
     } 
    ); 
}); 

ou encore plus facile avec la fonction .load():

$('#resultTable tr').live('click', function (event) { 
    $('#player').load(
     '<%= Url.Action("SearchResult", "Search") %>', 
     { content: 'GetCallDetails' } 
    ); 
}); 

notez également l'utilisation d'un assistant url au lieu de coder en dur l'URL.Vous devez toujours être en utilisant des aides d'URL lorsqu'ils traitent avec urls parce qu'il ya des questions sur centièmes StackOverflow va comme Mon application cesse de fonctionner Déployés dans IIS et je ne veux pas un plus :-)

+0

salut.thanx pour l'aide. J'ai essayé les deux méthodes que vous suggérez. Mais ce n'est pas de remplacer le fichier searchresultplayer.ascx. Lorsque vous utilisez htmlhelper, je peux déboguer ce fichier ascx. Mais lors de l'utilisation de jquery les points de rupture sur le fichier ascx ne fonctionne pas et il ne remplace pas les données actuelles .. Est-ce que je dois utiliser le fichier ascx pour recharger une partie partielle de la page? –

+0

@Null Pointer, que retourne votre action de contrôleur '/ Search/SearchResult'? Normalement, il devrait retourner le partial, comme ceci 'return PartialView (" searchresultplayer ");'. –

+0

Peut-on se tourner vers la question éditée –

0

Jetez un oeil à la question here et voir si c'est ce que vous cherchez à accomplir

Questions connexes