Ajax加载部分视图接受参数

时间:2011-12-07 07:51:57

标签: jquery asp.net-mvc ajax partial-views

我有一个视图,从数据库表PartList中以htmltable格式列出部件。 htmltable包含一个链接,该链接应该用于向数据库表Bom输入值。单击链接时,它应加载该特定零件的部分视图。 partialview包含一个用于选择子部件的下拉列表,一个用于输入数量的文本框和一个用于显示该部件的另一个bom enter的htmltable。令我感到震惊的是我需要加载使用ajax接受partId的partialview。应将partialview加载到listPart视图中的div。如何实现这个目标?

1 个答案:

答案 0 :(得分:1)

通过不显示当前代码,您不清楚自己的问题。据我所知,这篇博文应该会给你一个想法:

Working With JQuery Ajax API on ASP.NET MVC 3.0 - Power of JSON, JQuery and ASP.NET MVC Partial Views

您需要做的很简单:

  1. 对您的控制器操作进行ajax调用:

    $.ajax({
        type: "POST",
        url: actionURL,
        data: d,
        success: function (r) {
            $("#to-do-db-list-container").html(r.data);
        },
        complete: function () {
            $("#ajax-progress-dialog").dialog("close");
            $(".isDone").bind("click", function (event) {
                toggleIsDone(event, $(this));
            });
        },
        error: function (req, status, error) {
            //do what you need to do here if an error occurs
            $("#ajax-progress-dialog").dialog("close");
        }
    });
    
  2. 返回您的局部视图:

    [HttpPost]
    public ActionResult toogleIsDone(int itemId) {
    
        //Getting the item according to itemId param
        var model = _entities.ToDoTBs.FirstOrDefault(x => x.ToDoItemID == itemId);
        //toggling the IsDone property
        model.IsDone = !model.IsDone;
    
        //Making the change on the db and saving
        ObjectStateEntry osmEntry = _entities.ObjectStateManager.GetObjectStateEntry(model);
        osmEntry.ChangeState(EntityState.Modified);
        _entities.SaveChanges();
    
        var updatedModel = _entities.ToDoTBs;
    
        //returning the new template as json result
        return Json(new { data = this.RenderPartialViewToString("_ToDoDBListPartial", updatedModel) });
    }
    
  3. RenderPartialViewToString是一个控制器扩展,它在您的控制器中呈现您的局部视图,并返回输出的字符串值。您将在博客文章中找到所有代码。