2012-07-05 4 views
1

J'ai une vue dans le moteur de vue MVC3 Razor comme l'image suivante. Maintenant, je veux confirmer l'affichage de la sortie de l'action de connexion sous ce texte de lien et non la nouvelle page. Comment puis-je faire ce travail?Vue partielle dans la vue MVC3 Razor Moteur

Veuillez expliquer avec un exemple de code.

enter image description here

My View Comme ceci:

@model ESimSol.BusinessObjects.COA_ChartsOfAccount 
@{ 
    ViewBag.Title = "Dynamic Account Head Configure"; 
} 

<h2>Dynamic Account Head Configure</h2> 

<table border="0"> 
    <tr> 
     <td> Select an Server Connection </td> 
     <td style="width:5px">:</td> 
     <td>@Html.DropDownListFor(m => m.DBConnections, Model.DBConnections.Select(x => new SelectListItem() { Text = x.ConnectionName, Value = x.DBConnectionID.ToString()}))</td>   
    </tr> 
    <tr> 
     <td> </td> 
     <td style="width:5px"></td> 
     <td>@Html.ActionLink("Confirm Connection", "ConformConnection")</td>   
    </tr> 
</table> 

et mon action comme contrôleur suivant:

public ActionResult ConfirmConnection() 
     {   
      return PartialView(); 

     } 

Répondre

0

d'abord déplacer votre balisage à une vue partielle. Après cela, définissez une méthode d'action qui rend votre vue partielle.

[ChildActionOnly] 
public ActionResult ConfirmConnection(COA_ChartsOfAccount model) 
{   
    return PartialView("MyPartialView", model); 
} 

attribut ChildActionOnly fait que cette méthode d'action ne peut pas être appelé par une requête HTTP.

Ensuite, vous pouvez l'afficher quand vous le souhaitez en utilisant la méthode Html.Action. Ignorer en passant le modèle en tant que paramètre s'il ne change pas par la page que vous l'affichez. Vous pouvez le récupérer dans votre méthode d'action.

0

Je suis un grand fan de l'utilisation jquery ajax et pour ce genre de chose ... http://api.jquery.com/jQuery.ajax/

Si vous suivez le modèle MVC typique, vous pouvez ajouter un lien d'action à la page en utilisant quelque chose comme ...

@Html.ActionLink("controller", "action", args); 

mais je pencherais pour l'approche axée sur ajax ...

<script type="text/javascript"> 
     var ajaxBaseUrl = '@Url.Action("yourController", "ConformConnection", new { args })'; 
     $(link).click(function() { 
      var currentElement = $(this); 
      $.ajax({ 
       url: ajaxBaseUrl, 
       data: { any other queryString stuff u want to pass }, 
       type: 'POST', 
       success: function (data) { 
         // action to take when the ajax call comes back 
        } 
       }); 
      }); 
     }); 
    </script> 
Questions connexes