Question

I am returning a partial view, but the partial view is not displaying on my particular portion of page. I am returning a model. Can anyone see a problem in my code? I am getting only the partial view as a result. How can I embed the _CartListing Partial View on my main page CartManager?

    public ActionResult CartManager()
    {
        string user = "jaddu";

          FoodContext db = new FoodContext();

          List<CartListing> fd = (from e in db.FoodItems
                                  join o in db.Carts on e.itemid equals o.itemid 
                                  where o.username==user
                                  select new CartListing 
                                  {
                                   ItemId=e.itemid,
                                   CartId=o.cartid,
                                   Itemname =e.itemname,
                                   Amount =o.amount,
                                   Price=(float)(e.price*o.amount),

                               }).ToList();


          CartModel vm = new CartModel { CartListings = fd };

          return PartialView("_CartListing",vm);

CartManager View

<div class="mycontainer">

    <div id="mydiv">
      @{Html.Action("CartManager","Cart");}    
    </div>

</div> 

_CartListing Partial View

@model CartModel
<table width="100%">
    <tr bgcolor="#E4E4E4">
        <th style="padding-left:20px;">
        FoodIem
        </th>
        <th  style="padding-left:20px;">
      Quantity
        </th>
        <th style="padding-left:20px;">
        Price
        </th>
       <th></th>
    </tr>
    @{
        int i = 0;
        string k;
    }
     @foreach (CartListing ct in Model.CartListings)
     {
         i = i + 1;
   using (Ajax.BeginForm("DeleteCart", "Cart", new { cartid = ct.CartId }, new AjaxOptions()
{
    HttpMethod = "Post",
    OnSuccess = "onSuccess",
    UpdateTargetId = "mydiv"
}, new {id="Form"+i }))
{
<tr>
<td style="padding-left:20px;">
@ct.CartId
</td>
<td style="padding-left:20px;" >
@ct.Amount
</td>
<td style="padding-left:20px;">
@ct.Price
</td>

<td>
<input type="submit" value="delete" id="delete_@i"/>
</td>
</tr> 
}

     }
 <tr bgcolor="#E4E4E4"><td></td><td></td><td></td><td></td></tr>
</table>
Was it helpful?

Solution

In your CartManager View instead of:

@{Html.Action("CartManager","Cart");}

Try

@{Html.RenderAction("CartManager","Cart");}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top