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?
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;
}
});
}
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);
}
<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>
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
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