2013-12-19 4 views
2

У меня есть код, который, кажется, работает некорректно. Я уверен, что есть что-то, что мне не хватает, но я слишком долго избивал себе голову и никуда не денусь.Метод PartialView возвращает Null (похоже, вообще не вызывает вид)

Вот AJAX вызов:

$.ajax({ 
    type: 'POST', 
    url: '@Url.Action("GetPartial", "MyPage")', 
    async: true, 
    data: { 
     MyID: 'ABC123' 
    }, 
    error: function (jqXHR, textStatus, errorThrown) { 
     alert('Error loading partial for ' + MyId + '\n\n' + jqXHR + '-' + textStatus + '-' + errorThrown); 
    } 
}).done(function (result) { 
    $(data).html(result); 
}); 

Здесь действие в MyPageController.cs:

[HttpPost] 
public PartialViewResult GetPartial(string MyID) 
{ 
    return PartialView("ThePartial"); 
} 

В моих взглядах diretory У меня есть MyPage подкаталог, который содержит ThePartial.cshtml.

Я поставил точки останова в этом cshtml, и он, кажется, никогда не называется.

Кроме того, я проверил, что PartialView пуст, слегка изменив свой код действия, чтобы:

[HttpPost] 
public PartialViewResult GetPartial(string MyID) 
{ 
    PartialViewResult pView = PartialView("ThePartial"); 
    return pView; 
} 

, а затем положить контрольную точку на линии «возврата» и глядя на содержимое Pview.

Ниже приведена сокращенная версия частичного обзора.

@model MyProject.Models.MyModel // There is a breakpoint here 
@{ 
    var x = "testing"; // There is a breakpoint here 
    x += " 123"; // There is a breakpoint here 
} 
<div>@x</div> 

У меня на самом деле есть контрольные точки, установленные на первой, третьей и четвертой строках, которые никогда не попадали.

Я понимаю, что частичное относится к модели данных, которая не включена в действие, но в реальной версии используется модель IS. Я удалил его из этого сообщения, чтобы не допустить его, думая, что модель не там, где проблема. Вот фактический вызов PartialView:

MyData myData = MyModel.GetData(MyID); 
PartialViewResult pView = PartialView("ThePartial", myData); 

Я полностью потерял это и буду признателен за любую помощь.

+0

Не можете добавить описание вашего частичного вида? – alexmac

+0

Я удалил ссылки на модель данных из приведенного выше кода, поэтому частичный вид не имеет большого смысла.но я добавлю, что смогу. – ESDictor

+0

pView in debug is null? Я могу предложить изменить PartialViewResult на ActionResult и попытаться отобразить другое, а не частичное представление (которое правильно отображается). – alexmac

ответ

1

Похоже, что в частичном представлении была некоторая синтаксическая ошибка, и что ошибка не сообщается никоим образом, кроме как не вернуть представление.

Для того, чтобы прийти к такому выводу, я сделал следующее:

Я создал простой частичный вид, состоящее из:

<div>THIS IS A TEST</div> 

Тогда я имел мое действие возвращения этой точки зрения, и он сделал это успешно.

Затем я скопировал блоки кода из старого (полного) частичного представления в новый, и в какой-то момент он прекратил возвращать что-либо. Теперь я просматриваю код, чтобы сузить область ошибки.

Должен сказать, что я очень недоволен тем, что об ошибке ничего не сообщалось.

Спасибо всем, кто внес свой вклад здесь.

0

Вы пробовали, указав полный путь частичного просмотра, чтобы увидеть, если он попал?

+0

Я проверил, что это не связано с путями. Я отправлю ответ на мгновение. – ESDictor

Смежные вопросы