2012-09-25 4 views
1

У меня есть действие контроллера, которое вызывается JQuery ajax и, надеюсь, возвращает содержимое «Результаты» на запрашивающую страницу. До сих пор у меня есть ...Частичный вид не рендеринг через вызов ajax

Контроллер

public ActionResult DynCalc(resultsModel model){ 
    ... 
    //code that populates model - all working ok 
    ... 
    if (Request.IsAjaxRequest()) 
      { 
      return PartialView("results", model.Results); 
      } 
      else 
      { 
      return null; //Handle this later 
      } 
    } 

Это передает обратно действительную модель. Вызывается из JavaScript:

 $.ajax({ 
      url: "/Test/DynCalc", 
      type: "POST", 
      data: $("#frmResults").serialize(), //This part works 
      dataType: "html", 
      success: function (result) { 
       $('#resultsSection').html(result); 
       $('#hide_panel a').flash("#111", 1000); 
      } 
     }); 

Sucess никогда не попал. Надеюсь, кто-то может просто сказать мне, что я уныл и пропуская что-то очевидное?

Результаты моего частичного просмотра - это всего лишь HTML-страница с javascript. Если я просто следующий

Hello world в результатах зрения, то он работает нормально, с любым сценарием в это не

Я на правильном пути? Должен ли я менять тип возврата на контроллер? Или использовать JSON?

Я не размещал содержание страницы результатов, так как это не имеет значения, если это целый документ или просто <b>hi</b> - он делает то же самое.

+0

JQ Я предполагаю, что вы имеете в виду jquery? Я бы рекомендовал использовать Firefox с Firebug для его отладки. Вы можете пройти через него и посмотреть, что на самом деле происходит, и контролировать сетевой трафик. Также добавьте обработчик события сбоя/ошибки, так как если он не успеет его сбой/ошибка, и это также скажет вам что-то. –

+0

@DaleBurrell Да, я также добавил обработчик Fail, и он был поражен каждый раз, когда 'results' был объектом, который я не могу проверить. – JustAnotherDeveloper

+0

Вы не могли проверить его в Firebug? –

ответ

1

Попробуйте вернуть только вид. Поскольку ваш результат в этом случае является полным представлением (потому что результатом действия может быть HTML, XML, JSON ... что угодно). Используйте PartialView только как способ визуализации части вашего вида.

E.g. на вашем MasterPage вы хотите «всегда» предоставлять информацию о пользователе: @RenderAction("UserInfoAction", "UserController")

0
var model= { 
     "PropertyName1":$("#txt1").val(), 
     "PropertyName1": $("#txt2").val(),   
     } 

    $.ajax({ 
     type:"POST", 
     url: 'Url.Action("DynCalc","ControllerName")', 
     data: JSON.stringify(model), 
     contentType: "application/json;charset=utf-8", 
     success: function (data, status, xhr) 
      { 
     alert("The result is : " + status + ": " + data); 
      }, 
     error: function (xhr) 
     { 
     alert(xhr.responseText); 
     } 
     }); 
Смежные вопросы