如何在Jquery中调用ViewResult

时间:2011-04-05 11:16:28

标签: jquery asp.net-mvc-2

亲爱的专家, 我正在关注[Mr.Steve Sanderson示例] [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 :(得分:0)

我不确定你想要做什么不同的,你想在你的actionlink中添加click处理程序而不是你现在拥有的jQuery吗?

查看

<%= 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;
    });
}

答案 1 :(得分:0)

我也不确定你想要什么不同,但如果我的问题得到了解决,你不想为每个链接制作点击事件吗?

如果是这样,你可以这样做:

$.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”。也许你必须改变逻辑以附加到不同的容器,但希望你明白这一点:)

答案 2 :(得分:0)

Okey,您的代码存在问题。如果不先声明它,就不应该调用函数。这意味着,您的函数“AddNewRow”应该通过您的调用写入。

实际上,我会跳过这个功能并按照这样做:

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

应该这样做!

答案 3 :(得分:0)

我可以使用这行代码: -

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

很抱歉,如果我没有明确表达我的问题。