Обратный вызов jquery $ .get () не обрабатывает частичное представление - PullRequest
0 голосов
/ 17 августа 2011

Я делаю запрос HttpGet с помощью jquery следующим образом:

$.get("@Url.Action("PbisForSprint", "SprintBacklog")/" + sprintId, function (result) {
                    oTable.fnOpen(nTr, result, 'details');
                });

oTable.fnOpen - это функция, определенная в таблицах данных сценариях, которая добавляет строку в мою таблицу данных.Запрос get должен вернуть список pbis, связанных с выбранным спринтом.

Мой контроллер должен вернуть частичное представление, но если у меня есть этот код, ничего не отображается.Однако, если я возвращаю строку, строка отображается.Например, следующий код не работает:

    public ActionResult PbisForSprint(int id)
    {
        //get Sprint
        var sprint = sprintRepository.GetById(id);            
        return View(sprint.Pbis);
    }

, но если я изменю его на

public stringPbisForSprint(int id)
    {
        //get Sprint
        var sprint = sprintRepository.GetById(id);            
        return "This is just test data, I hope I don't need to return html strings";
    }

, то моя страница будет отображаться нормально.

Вот представление, которое я пытаюсь отправить:

@model IEnumerable<Pbi>

<table cellpadding="4" cellspacing="0" border="0" style="padding-left:50px;">
    <tr>
        <th>Id</th>
        <th>Title</th>
        <th>Story Points</th>
        <th>Level of done</th>
    </tr>
@foreach (var item in Model)
{
    <tr>
        <td>@item.Id</td>
        <td>@item.Title</td>
        <td>@item.StoryPoints</td>
        <td>@item.Done</td>
    </tr>
    <tr>
        <td>
            @Html.ActionLink("Create New", "Create")
        </td>
    </tr>
}
</table>

Заранее благодарен за любую помощь, которую кто-либо может предложить.

1 Ответ

1 голос
/ 17 августа 2011

Несколько вещей, которые нужно попробовать:

  • Не возвращать представление, возвращать частичное (я подозреваю, что это именно то, что вам нужно):

    вернуть PartialView (sprint.Pbis);

И, конечно, вам необходимо создать частичное представление, а не полное.

  • Всегда выполняйте инкрементное кодирование при работе с AJAX,Начните с того, что просто попытайтесь отобразить частичное в DIV на странице как есть.Затем, когда это сработает, посмотрите на усовершенствование ваших таблиц данных.

Я почти уверен, что моя первая мысль - ваша проблема.Вы не можете иметь вложенные элементы <html> на одной странице.Может быть только один элемент <html>.

Бонусный совет (бесплатно) - не привязывайте переменные QS к URL:

@Url.Action("PbisForSprint", "SprintBacklog")/" + sprintId

Используйте второй параметр для $.get, который является data (строка запроса для GET, значения формы для POST):

$.get('@Url.Action("PbisForSprint", "SprintBacklog")', { id: sprintId }, function(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...