Asp.net MVC JQuery-AJAX не отображать HTML - PullRequest
0 голосов
/ 16 марта 2010

Я пытаюсь использовать jQuery ajax с MVC. Я могу заставить его отправлять обратно в нужное мне действие, и он возвращает объекты ViewData с обновленными данными, но никогда не отображает HTML. У меня есть представление, содержащее некоторые пользовательские элементы управления MVC, и я хочу, чтобы они обновлялись по таймеру.

Вот моя разметка просмотра

<%@ 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>

При обратной передаче я вызываю действие под названием RefreshEPRF, которое снова загружает только необходимые пользовательские элементы управления

<%@ 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"); %>

И наконец марпуп в контроле

<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>

Когда я выполняю этот код, ViewData в пользовательском элементе управления имеет новые обновленные значения, но страница возвращается без новых значений. Я пробовал jQuery.get и ajax, но безуспешно. Любая помощь будет велика, спасибо

1 Ответ

1 голос
/ 17 марта 2010

Вы должны написать свой ответ ... попробуйте сделать это:

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

Параметр response должен содержать ваше представление, и для этого просто поместите его содержимое в ваш div.

однако ваше действие под названием RefreshEPRF должно возвращать частичное представление

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...