Как вызвать ViewResult в Jquery - PullRequest
0 голосов
/ 05 апреля 2011

Уважаемые эксперты, Я следую [Mr.Steve Sanderson Example] [1] для работы со списком переменной длины, в стиле ASP.NET MVC 2.

Приведенный ниже код прекрасно добавляет новые элементы, когда мы нажимаем гиперссылку «Добавить еще»: -

Я хочу вместо того, чтобы нажать «Добавить еще», создать функцию, которая выполняет те же действия, что и $("#addItem").click, и я вызываю эту функцию в своей программе.

Может кто-нибудь подсказать, как мне это сделать?

Код контроллера: -

  public ViewResult BlankEditorRow(string formId)
    {
        return new AjaxViewResult("ChequeDetail", new cheques()) { UpdateValidationForFormId = formId };
    }

Просмотр кода: -

 <%= Html.ActionLink("Add More", "BlankEditorRow", new { ViewContext.FormContext.FormId }, new { id = "addItem" }) %>

JQuery: -

$("#addItem").click(function() {
  $.ajax({
    url: this.href,
    cache: false,
    success: function (html) {
        $("#editorRows").append(html);
    }
  });

  return false;
});

Ответы [ 4 ]

0 голосов
/ 11 апреля 2011

Я понимаю, что это работает с этой строкой кода: -

            var a = document.getElementById('addItem');
        $(a).trigger('click');

Извините, если я не выразил свой вопрос четко.

0 голосов
/ 05 апреля 2011

Я также не уверен, что вы хотите по-другому, но если я правильно понял ваш вопрос, вы не хотите делать клики для каждой ссылки?

Если это так, вы можете сделать так:

$.fn.addTo = function (element) {
  return this.each(function () {
    $(this).click(function () {

      $.ajax({
        url: this.href,
        cache: false,
        success: function (html) {
          $(element).append(html);
        }
      });

      return false;
    });
  });
}

Теперь вам просто нужно инициализировать это при запуске вашего проекта:

$('.addItem').addTo('.container');

и каждую ссылкус классом "addItem" загрузит его href и добавит его в ".container".Возможно, вам придется изменить логику для добавления в различные контейнеры, но, надеюсь, вы поймете:)

0 голосов
/ 06 апреля 2011

Окей, есть проблема с вашим кодом. Вы никогда не должны вызывать функцию, не объявив ее сначала. Это означает, что ваша функция «AddNewRow» должна быть записана поверх вашего вызова.

На самом деле, я бы просто пропустил функцию и сделал так:

else {
     $.ajax({
          url: this.href,
          cache: false,
          success: function (html) {
               $("#editorRows").append(html);
          }
     });
}

Это должно сделать это!

0 голосов
/ 05 апреля 2011

Я не совсем уверен, что вы хотите сделать по-другому, хотите ли вы добавить обработчик кликов в вашу actionlink вместо того, чтобы использовать jQuery, который у вас есть сейчас?

View

<%= Html.ActionLink("Add More", "BlankEditorRow", new { ViewContext.FormContext.FormId }, new { id = "addItem", onclick="AddItem();" }) %>

Javascript

function AddItem()
{
    $.ajax({
        url: this.href,
        cache: false,
        success: function (html) {
            $("#editorRows").append(html);
            }
        });

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