Проблемы с реализацией Ajax для возврата HTML.Partial страницы в MVC3 - PullRequest
0 голосов
/ 09 января 2012

Я пытаюсь реализовать способ Ajax для обновления моей сетки данных. Пока что в моем контроллере закодировано следующее:

public ActionResult Detail(string ac, string me) {     
   vm.AdminDetails = _link.Detail(ac + me).ToList();      
   if (Request.IsAjaxRequest())         
      return PartialView(vm);     
   return View(vm); 
} 

Мой снимок вида выглядит так:

@model ViewModels.Shared.BaseViewModel
@{ 
    Layout = "~/Areas/Administration/Views/Menus/_Layout.cshtml";
}

@section content {
<div class="bdy_box">
        <div id="detailData" class="rep_tb0">
        // code to generate the list of data
        </div>
</div>

Мой снимок JavaScript выглядит так:

function reload(entity, pk) {
    $.ajax({
        url: "/Administration/" + entity + "s/Detail",
        data: { pk: pk },
        dataType: 'html',
        cache: false,
        success: function (responseText) {
            $('#detailData').html(responseText);
        }
    });
};

Данные возвращаются, НО моя проблема в том, что возвращаются и другие данные. Когда я смотрю на содержимое элемента detailData, я вижу гораздо больше, чем мне нужно. Например, я вижу что-то вроде следующего:

<div class="rep_tb0" id="detailData">  
<title></title>    
<meta content="" name="title">    
<meta content="" name="description">     
<meta content="" name="keywords">    
<link type="image/x-icon" href="/Content/Favicons/default.ico" rel="shortcut icon">     
<link type="text/css" rel="stylesheet" href="/Content/Stylesheets/Style203.css">

Есть ли причина, по которой он показывает мне все это, и как я могу остановить его, показывая всю информацию этого типа заголовка?

Ответы [ 2 ]

1 голос
/ 09 января 2012

Melissa

Я предполагаю, что у вас есть частичное представление с именем _detail.cshtml (если нет, вам нужно его создать) ??

Я полагаю, что вы можете использовать 'full' view detail.cshtml на основе вашего образца. Я бы посоветовал вам назвать это действие следующим образом:

public ActionResult Detail(string ac, string me) {     
   vm.AdminDetails = _link.Detail(ac + me).ToList();      
   if (Request.IsAjaxRequest())         
      return PartialView("_details", vm);     
   return View(vm); 
} 
0 голосов
/ 09 января 2012

Вы должны убедиться, что ваш запрос выполнен с установленным X-Requested-With заголовком HTTP.Проверьте это с помощью аддона инструментов разработчика в вашем браузере (в Chrome и IE9 он встроен, в Firefox получите Firebug).Возможно, вы захотите дважды проверить свой код в разных браузерах, поскольку в прошлом возникали разные необъяснимые проблемы с IsAjaxRequest (возможно, в зависимости от настроек браузера)

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