hetal gala
hetal gala

Reputation: 249

MVC Partial view hides main view

I am new to MVC. using MVC 3.

I have PersonMaster Controller as below... having following two Actions.

public ActionResult TopTenPersons()
    {
        Thread.Sleep(2000);
        var persons = DatabaseHelper.Instance.Database.Query<Person_Master>("select top(10) from person_master").ToList();
        return View("_PersonGrid", persons);
    }

    public ActionResult Index()
    {
        var persons = DatabaseHelper.Instance.Database.Query<Person_Master>("select * from person_master").ToList();

        return View("_PersonGrid",persons);
        //return View();
    }

Then, index.cshtml view is as follows..

@model System.Collections.Generic.ICollection<MyPracticeApp1.Models.Person_Master>
@section scripts{
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript">    </script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
}

<h2>Persons</h2>

<p>

@Ajax.ActionLink("Click to top 10 Persons","TopTenPersons", new AjaxOptions{
UpdateTargetId="tbl_person",
InsertionMode=InsertionMode.Replace,
HttpMethod="GET"
})
</p>
<div id="tbl_person">
@Html.Action("Index","PersonMaster");
</div>

..and partial view _PersonGrid.cshtml which is called above in index view is as follows...

@model System.Collections.Generic.ICollection<MyPracticeApp1.Models.Person_Master>
@{
var persongrid = new WebGrid(Model);
}
@persongrid.GetHtml()

....But problem is that it directly shows partial view. It is not rendering Ajax Actionlink of index view. So, where is the mistake?

Upvotes: 1

Views: 723

Answers (2)

Eray Aydogdu
Eray Aydogdu

Reputation: 250

add layout=null to _PersonGrid.cshtml

seems like

@{
   Layout = null;
}

when you add this code It is not rendering full view..

Upvotes: 1

Mathew Thompson
Mathew Thompson

Reputation: 56429

Change TopTenPersons to return a Partial View, not a View

public ActionResult Index()
{
    var persons = DatabaseHelper.Instance.Database.Query<Person_Master>("select * from person_master").ToList();

    return PartialView("_PersonGrid",persons);
}

Upvotes: 1

Related Questions