2016-02-09 3 views
2

У меня есть страница index.cshtml, и я вызываю другую страницу test.cshtml, используя iframes. Страница test.cshtml содержит код для фильтрации некоторых вещей. Несмотря на то, что значения отфильтровываются, когда дело доходит до пользовательского интерфейса, оно не отображает отфильтрованные значения. Не могли бы вы помочь мне в определении того, чего я не вижу.Результаты 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 возвращает представление? Это MVC - не ASPX. На странице нет состояния - это просто простой html – TGlatzer

+0

Покажите нам действия вашего контроллера кстати. – TGlatzer

ответ

2

Вы делаете вызов к серверу с помощью AJAX и ins что вы настраиваете отфильтрованные данные в ViewBag, но вы не читаете это снова с сервера (ваша страница не выполняется на сервере снова, потому что ваш вызов осуществляется через ajax).

Что вы должны делать, вместо того, чтобы устанавливать его в ViewBag, вы должны либо отправить его как данные JSON (и в свой метод успеха ajax, проанализировать json-массив и построить разметку html и добавить/заменить конкретную DOM элемент) или частичное представление возврата, которое использует эти данные для визуализации любой необходимой разметки и замены существующего элемента DOM, который вы хотите.

+0

Передача модели на частичный вид также поможет сохранить строгое представление вашего представления, чтобы предотвратить другие ошибки. Всегда используйте модель для просмотра вместо использования ViewBag. – Trucktech

Смежные вопросы