In your CartManager View instead of:
@{Html.Action("CartManager","Cart");}
Try
@{Html.RenderAction("CartManager","Cart");}
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>
Solution
In your CartManager View instead of:
@{Html.Action("CartManager","Cart");}
Try
@{Html.RenderAction("CartManager","Cart");}