2012-01-09 55 views
0

我想實現一種Ajax方式來更新我的數據網格。到目前爲止,我已經編寫了以下在我的控制器:實現Ajax以返回MVC3中的HTML.Partial頁面的問題

public ActionResult Detail(string ac, string me) {  
    vm.AdminDetails = _link.Detail(ac + me).ToList();  
    if (Request.IsAjaxRequest())   
     return PartialView(vm);  
    return View(vm); 
} 

我的觀點的快照看起來是這樣的:

@model ViewModels.Shared.BaseViewModel 
@{ 
    Layout = "~/Areas/Administration/Views/Menus/_Layout.cshtml"; 
} 

@section content { 
<div class="bdy_box"> 
     <div id="detailData" class="rep_tb0"> 
     // code to generate the list of data 
     </div> 
</div> 

我的JavaScript的快照看起來是這樣的:

function reload(entity, pk) { 
    $.ajax({ 
     url: "/Administration/" + entity + "s/Detail", 
     data: { pk: pk }, 
     dataType: 'html', 
     cache: false, 
     success: function (responseText) { 
      $('#detailData').html(responseText); 
     } 
    }); 
}; 

數據確實得到返回,但我的問題是其他數據也得到返回。當我看看detailData div的內容時,我看到的遠遠超過我需要的。比如我看到類似以下內容:

<div class="rep_tb0" id="detailData"> 
<title></title>  
<meta content="" name="title">  
<meta content="" name="description">  
<meta content="" name="keywords">  
<link type="image/x-icon" href="/Content/Favicons/default.ico" rel="shortcut icon">  
<link type="text/css" rel="stylesheet" href="/Content/Stylesheets/Style203.css"> 

是否有一個原因,它顯示了我這一切,以及它如何我可以停止放映的所有信息這個頭型?

回答

1

梅麗莎,

我假設你已經稱爲partialview _detail.cshtml(如果沒有,你需要創建一個)?

我相信你可能實際上是基於你的示例調用'full'view detail.cshtml。我建議你沿着以下幾行呼叫你的行動:

public ActionResult Detail(string ac, string me) {  
    vm.AdminDetails = _link.Detail(ac + me).ToList();  
    if (Request.IsAjaxRequest())   
     return PartialView("_details", vm);  
    return View(vm); 
} 
+0

沒有局部視圖。這是Ajax數據回到JavaScript。 – 2012-01-09 09:31:46

+0

梅麗莎,你需要有一個局部視圖才能工作,否則,你的div總是會填滿整個視圖的內容。用所需的「部分」元素創建一個局部視圖,你會很開心。 (同樣,根據我上面的回覆,修改你的行動) – 2012-01-09 10:04:27

+0

Jim。按照斯坦克在這篇文章中所說的話,我不認爲他說我需要局部的觀點。也許我只是讀錯了,但似乎他說這將是好的,並沒有提到另一種觀點http://stackoverflow.com/questions/8782879/how-can-i-code-a-refresh-of -a-HTML-使用的Ajax功能於MVC3的RenderPartial-/ 8782887#comment10958218_8782887 – 2012-01-09 10:47:16

0

您需要確保您的請求是使用X-Requested-With HTTP標頭進行設置的。用開發工具插件檢查你的瀏覽器(在Chrome和IE9中內置,在Firefox中爲Firebug)。您可能要翻一番下不同的瀏覽器檢查你的代碼有與IsAjaxRequest(可能依賴於瀏覽器設置)過去存在的不同問題,原因不明