2010-03-16 7 views
0

J'essaie d'utiliser jQuery ajax avec MVC Je peux l'obtenir pour poster à l'action que je veux et il retourne les objets ViewData avec des données mises à jour, mais ne rend jamais le HTML . J'ai une vue qui contient des contrôles utilisateur MVC et je veux les mettre à jour sur une minuterie.Asp.net MVC jquery-ajax ne rend pas html

Voici mon point de vue Markup

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/PageWithSummaryViewAndTabs.Master" Inherits="System.Web.Mvc.ViewPage" %> 
<asp:Content ID="FullCaseTitle" ContentPlaceHolderID="TitleContent" runat="server"> 

</asp:Content> 

<asp:Content ID="FullCaseContent" ContentPlaceHolderID="MainContent" runat="server"> 
<script type="text/javascript"> 
window.setInterval(test, 5000); 
function test() { 
    jQuery.get("/PatientCase/RefreshEPRF", function(response) { }); 
} 
</script> 

<div id="loadingDiv" style="display:none">Updating</div> 

    <input id="refreshPatientCaseIndexButton" type="submit" visible="true" title="refresh" value="Refresh" /> 
    <h2>Full Case</h2> 
    <div id="EPRFContent"> 
     <%Html.RenderPartial(@"~/Views/PatientCase/SectionEPRF.ascx"); %> 
     <%Html.RenderPartial(@"~/Views/PatientCase/SectionDrugs.ascx"); %> 
    </div> 
    <div id="ImageContent"> 
     <%Html.RenderPartial(@"~/Views/PatientCase/SectionImagery.ascx"); %> 
    </div> 
</asp:Content> 

Sur postback j'appelle une action appelée RefreshEPRF qui charge seulement les contrôles utilisateur requis à nouveau

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<%Html.RenderPartial(@"~/Views/PatientCase/SectionEPRF.ascx"); %> 
<%Html.RenderPartial(@"~/Views/PatientCase/SectionDrugs.ascx"); %> 

Et finalement le marpup dans le contrôle

<table id="detailstable"> 
    <tr><td id="detailslablecolumn">Patient Name : </td><td> 
    <% 
    foreach (var item in (List<STS_Lite.Models.PatinetCase.EPRFItem>)ViewData["EPRF"]) 
    { 
     if (item.datumItemId == 46) 
     { 
      if (item.Stroke) 
      { 
      %> 
       <img src="/PatientCaseIndex/InkImageData/GetInkImage/<%=ViewData["PatientCaseId"]%>/<%=ViewData["TemplateInstanceId"]%>/<%=item.TemplateItemId %>" /> 
      <% 
      } 
      else 
      {%> 
       <%=item.Value.ToString()%> 
      <%} 
      break; 
     } 
    } 
%></td></tr><table> 

Lorsque je parcours ce code, ViewData dans le contrôle utilisateur a le nouveau valeurs datées mais la page revient sans nouvelles valeurs. J'ai essayé le jQuery.get et ajax mais sans chance. Toute aide serait un grand merci

Répondre

1

Vous devez écrire votre réponse ... essayer de faire ceci:

jQuery.get("/PatientCase/RefreshEPRF", function(response) { 
     $("#EPRFContent").html(response) }); 

Le paramètre de réponse doit contenir votre point de vue, et faire cela tout simplement son contenu dans votre div.

votre action Appelée RefreshEPRF devrait cependant retourner une vue partielle

+0

Cela a fait l'affaire, merci :) –