Reputation: 10672
I have a button on my MVC view on click of it, it should add a partial view in a 'div', by calling an action which takes an object as a parameter
I tried out some thing like this:
$('#buttonId').onclick(function(){
$('#divid').load(@Html.Action("ActionName","ControllerName",new{parameterName = objectToPass}))
});
but it loads the actionresult/partial view on page load itself not a click of button
Any Idea?
Upvotes: 20
Views: 110906
Reputation: 11
Instead of innerHTML, html(data) worked for me;
$('#buttonId').click( function() {
$.ajax({
type: 'POST',
url: '@Url.Content("~/ControllerName/ActionName")',
data: objectToPass,
success: function (data) {
$('#divid').html(data);
}
});}
Upvotes: 1
Reputation: 11
On ajax call success function append result
ajax call=>
url: 'controllername/methodname'
success: function (partialviewresult)
{
$('#div').append(partialviewresult);
}
// inside controller
public ActionResult methodname()
{
return PartialView("~/a/a.cshtml");
}
and controller must return partialview as result
Upvotes: 1
Reputation: 749
Load Partial View in a div MVC 4
Recently I want load Partal View in Div , after doing lots of R&D and It's work for me
$.ajax({
type: 'POST',
url: '@Url.Content("~/ControllerName/ActionName")',
data: {
title: title
},
success: function(result) {
$('#divid').innerHTML = result;
}
});
And In Partal View Action Controller Code
public PartialViewResult ShowCategoryForm(string title)
{
Model model = new Model();
model.Title = title;
return PartialView("~/Views/ControllerName/PartalView.cshtml", model);
}
Upvotes: 10
Reputation: 1423
Try to use
@Url.Action
instead of
@Html.Action
Or you can use ajax, for example:
$('#buttonId').click( function() {
$.ajax({
type: 'POST',
url: '@Url.Content("~/ControllerName/ActionName")',
data: objectToPass,
success: function (data) {
$('#divid').innerHTML = data;
}
});
}
Upvotes: 23
Reputation: 517
<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>
Upvotes: 9
Reputation: 9031
load require a string, you are generating a variable path if you look at your source code it generate something like:
$('#buttonId').click(function(){
$('#divid').load(yoururl/);
});
but what you want is:
$('#buttonId').click(function(){
$('#divid').load("yoururl/");
});
the code should look like:
$('#buttonId').click(function(){
$('#divid').load('@Html.Action("ActionName","ControllerName",new{parameterName = objectToPass})');
});
but as I can see the load should be working until you click on #buttonId
Upvotes: 3