2016-02-09 145 views
2

我有一個頁面index.cshtml,並且我使用iframe調用另一個頁面test.cshtml。頁面test.cshtml包含代碼來過濾掉一些東西。即使在UI中過濾掉了這些值,它也不會顯示過濾後的值。你能幫我找出我錯過的東西嗎?ASP.NET MVC結果沒有被過濾掉

下面是示例代碼

index.cshtml

<div class="wrapper"> 
     <div class="h_iframe"> 
      <img class="ratio" src="/images/ratio16x9.png" /> 
       <iframe src="@Url.Action("test","Home")" frameborder="0"></iframe> 
     </div> 
    </div> 

test.cshtml

<div class="container"> 
    <div id="onpageloadvalues"> 

@foreach (var catgoryabstractslists in ViewBag.abstracts) 
     { 
      <div><a href="#" data-id='@catgoryabstractslists.AbstractID' id='[email protected](catgoryabstractslists.AbstractID)' class="select-abstracts">Abstract #@catgoryabstractslists.AbstractID - @catgoryabstractslists.AbstractTitle</a></div> 
      } 

</div> 

</div> 

$('.select-abstracts').click(function() { 
     var data = $(this).attr('data-id'); 
     $.ajax({ 
      url: '@Url.Action("GetAllAbstracts", "Home")', 
      data: { abstractid: data }, 
      success: function (result) { 
      }, 
      error: function() { 
       alert('Error'); 
      } 
     }); 
    }); 

控制器

public ActionResult GetAllAbstracts(string categoryname) 
     { 
      List<Abstracts> abstracts = Helpers.SchedOrgHelpers.LoadAbstracts();    
      abstracts = abstracts.Where(x => x.Category == categoryname).ToList(); 

      //Populate the Viewbag using the helpers method    
      ViewBag.abstracts = abstracts; 

      return View("...."); 
     } 
+0

你把你的調試器設置在foreach上嗎?爲什麼GetAllAbstracts會返回一個View?這是MVC - 不是ASPX。該頁面沒有狀態 - 它只是簡單的html – TGlatzer

+0

向我們顯示您的控制器動作順便說一句。 – TGlatzer

回答

2

您通過AJAX使得調用服務器和插件您可以將過濾的數據設置爲ViewBag,但您不會再次從服務器讀取(您的頁面不再在服務器上執行,因爲您的調用是通過ajax)。

你應該做的是,而不是將其設置爲ViewBag,你應該把它作爲JSON數據發送(並在你的ajax成功方法中,解析json數組並構建html標記並附加/替換特定的DOM元素)或返回的部分視圖,它使用這些數據來呈現您需要的任何標記,並替換您想要的現有DOM元素。

+0

將模型傳遞給部分視圖也有助於保持強制類型的視圖以防止其他錯誤。始終將模型傳遞給視圖而不是使用ViewBag。 – Trucktech