Проблема с Html.RenderPartial -MVC - PullRequest
1 голос
/ 01 марта 2011

Я пытаюсь обновить небольшую область на моей веб-странице. Я просто хочу перезагрузить страницу ascx (без обновления всей страницы), когда пользователь нажимает кнопку. Пример кода показан ниже. При загрузке работает нормально.

Но после ajax-запроса загруженные данные не отображаются (означает, что имя и адрес изменены). Я вижу, что при отладке html с новыми данными создается страница ascx после ajax-реквизита. Но это не обновляет представление.

ВИД

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<script type="text/javascript" src="../../Scripts/MicrosoftAjax.js"></script>
<script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>

<% using (Ajax.BeginForm("Index", "Home", 
                        new AjaxOptions {

                           HttpMethod="GET",

                          }))

   { %><button type="submit" name="test">test button</button>

     <% } %>
        <% Html.RenderPartial("test"); %>      
</asp:Content>

Контроллер

  public ActionResult Index()
    {
        Models.HomeModels obj = new Models.HomeModels();
        obj.name = "initial name";
        obj.address = "initial address";           
        if (Request.IsAjaxRequest())
        {
            obj.name="test";
            obj.address = "success";
            return PartialView("test",obj);
        }
        return View(obj);
    }

Test.ascx

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<test_partial_renderning.Models.HomeModels>" %>
 <% if(Model.address!=null)
 { %>
  <%= Html.Encode(Model.name) %><br />
  <%= Html.Encode(Model.address) %><br />
 <% } %>

Модель

    public string name { get; set; }
    public string address { get; set; }

1 Ответ

2 голосов
/ 01 марта 2011

Вы должны указать 'UpdateTargetId' (цель HTML, которая будет обновлена). Попробуйте следующее.

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<script type="text/javascript" src="../../Scripts/MicrosoftAjax.js"></script>
<script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>

<% using (Ajax.BeginForm("Index", "Home", 
                        new AjaxOptions {

                           HttpMethod="GET",
                           UpdateTargetId = "result"

                          }))

   { %><button type="submit" name="test">test button</button>

     <% } %>
        <div id="result"> 
        <% Html.RenderPartial("test"); %>      
       </div>  
</asp:Content>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...