web-dev-qa-db-fra.com

Charger une vue partielle dans un MVC div

J'ai un bouton sur ma vue MVC en cliquant dessus, il faut ajouter une vue partielle dans un 'div', en appelant une action qui prend un objet en paramètre

J'ai essayé quelque chose comme ça:

$('#buttonId').onclick(function(){

$('#divid').load(@Html.Action("ActionName","ControllerName",new{parameterName = objectToPass}))

});

mais il charge le résultat de l'action/vue partielle sur la page se charge pas un clic de bouton

Une idée?

17
BreakHead

Essayez d'utiliser

@Url.Action

au lieu de

@Html.Action

Ou vous pouvez utiliser ajax, par exemple:

$('#buttonId').click( function() {
    $.ajax({
        type: 'POST',
        url: '@Url.Content("~/ControllerName/ActionName")',
        data: objectToPass,
        success: function (data) {
           $('#divid').innerHTML = data;
        }
    });
}
23
Save

Charger une vue partielle dans un div MVC 4

Récemment, je veux charger la vue partielle dans Div, après avoir fait beaucoup de R&D et cela fonctionne pour moi

$.ajax({
    type: 'POST',
    url: '@Url.Content("~/ControllerName/ActionName")',
    data: {
        title: title
    },
    success: function(result) {
        $('#divid').innerHTML = result;
    }
});

Et en vue partielle Action Code du contrôleur

public PartialViewResult ShowCategoryForm(string title)
{
    Model model = new Model();
    model.Title = title;
    return PartialView("~/Views/ControllerName/PartalView.cshtml", model);
}
8
Sanjay Dwivedi
<script type="text/javascript">
    $(document).ready(function () {
        $('#buttonId').click(function () {
            $('#divid').load('@Url.Action("About", "Home")');
        });
    });
</script>

<a id="buttonId">Load partial view or Any URL</a>

<div id="divid" style="height:100px; width:400px";>

</div>
7
SHAURAJ SINGH

charge nécessite une chaîne, vous générez un chemin variable si vous regardez votre code source, il génère quelque chose comme:

$('#buttonId').click(function(){
    $('#divid').load(yoururl/);
});

mais ce que vous voulez c'est:

$('#buttonId').click(function(){
    $('#divid').load("yoururl/");
});

le code devrait ressembler à:

$('#buttonId').click(function(){
    $('#divid').load('@Html.Action("ActionName","ControllerName",new{parameterName = objectToPass})');
});

mais comme je peux le voir, la charge devrait fonctionner jusqu'à ce que vous cliquiez sur #buttonId

3
voigtan

Sur la fonction de succès d'appel ajax, ajoutez le résultat

appel ajax =>

url: 'controllername/methodname'
 success: function (partialviewresult)
{ 
          $('#div').append(partialviewresult);
}

  // inside controller
 public ActionResult methodname()
{
    return PartialView("~/a/a.cshtml");
}

et le contrôleur doit retourner une vue partielle comme résultat

0
Dinesh Babu