2013-05-21 51 views
0

我有一個包含局部視圖的MVC 4視圖。局部視圖被包括在主視圖中,如下所示:MVC 4 - 無法通過Ajax調用更新局部視圖

<div id="PartialView"> 
     @Html.Partial("_PhotoList", @Model)  
    </div> 

我的局部視圖看起來如下:

@model ExchangeSite.Entities.EstateSaleSellerListing 

<div style="width: 1300px; height: 300px; overflow: auto"> 
    @foreach (var photo in @Model.ImageList) 
    { 
     <a href="javascript:DeletePhoto(@photo.ImageId);"> 
      <img src="@Url.Action("GetPhoto", new { id = photo.ImageId })" alt="" title="Click on the image to remove it" width="250" height="190"/> 
     </a> 
    } 
</div> 

<script> 

    function DeletePhoto(imageId) { 
     var Url = "/EstateSaleSellerListing/DeletePhoto"; 

     $.get(Url, { imageId: imageId }, function (data) { 
      $("#PartialView").html(data); 
     }); 
    } 

</script> 

正如你可以看到,當圖像上的用戶點擊,則DeletePhoto()方法被調用。它調用指定控制器上名爲DeletePhoto的操作方法。操作方法會刪除照片,生成新的照片列表並更新局部視圖。除部分視圖之外的所有內容都不會更新。

我的控制器的代碼如下:

public ActionResult DeletePhoto(int imageId) 
{ 
    var photo = this._systemLogic.GetItem<Photo>(row => row.ImageId == imageId); 
    this._systemLogic.DeleteItem(photo); 

    EstateSaleSellerListing listing = new EstateSaleSellerListing(); 
    GetPhotoList(listing); 

    return PartialView(listing); 
} 

的EstateSaleSellerListing實體具有獲得顯示在局部視圖照片的對象的列表。

我沒有足夠的經驗知道爲什麼我的部分視圖在操作方法返回時沒有更新。

+0

您正在嘗試更新主視圖的div。在局部視圖中,命名您的div並在js中更新它。我希望它有幫助。 – Tushar

回答

1

嘗試你的JavaScript移動到你的主頁,並改變

return PartialView(listing); 

return PartialView("_PhotoList", listing); 
0

檢查您的緩存設置在jQuery的(它看起來像你使用jQuery的語法反正) 。我認爲你的第二個參數是有點過(它不是分配給數據)嘗試這種

<script> 
    function DeletePhoto(imageId) { 
     var Url = "/EstateSaleSellerListing/DeletePhoto"; 

     $.get(Url, { cache: false, data: { imageId: imageId }}, function (data) { 
      $("#PartialView").html(data); 
     }); 
    } 
</script> 
0

你也可以有控制方法使串局部視圖如果在部分加載。

控制器...

model.PartialViewContent=PartialToString("Partials/SmallerPart",model); 
return PartialView("Partials/LargerPart",model); 

查看

$("#PartialView").html(data.PartialViewContent); 

據透露,PartialToString不內置MVC。我必須一起破解