Ajax.BeginForm刷新局部..?

时间:2009-02-03 22:26:18

标签: c# asp.net-mvc

好的,我有一个使用ajax发布的表单......

<% using(Ajax.BeginForm(new AjaxOptions() { OnBegin="onBegin", OnSuccess = "onSuccess", OnFailure="onFailure"  })) { %>

在服务器端,我从控制器传回一个Json对象。现在,当OnSuccess事件触发时,我可以通过使用“result.get_response()。get_object()”来获取Json对象...

我的问题是,我需要能够使用Json对象中的项目列表刷新页面上的部分内容...

关于如何做到这一点的想法......?

4 个答案:

答案 0 :(得分:1)

使用jQuery,并遍历返回的JSON对象,构建您喜欢的任何内容。

示例:

  $.each(json, function(i, item) {
        //Add a dinner to the list on the right
        $('#dinnerList').append($('<li/>')
                              .attr("class", "dinnerItem")
                              .append($('<a/>').attr("href", "/Dinners/Details/" + item.ID)
                              .html(item.Name)).append("SomeThing"));
    });

答案 1 :(得分:1)

我认为您可以理解以下代码。

首先,创建一个ajax表单   - RefreshAjaxList:当前控制器的名称ajax动作。   - string.empty(可选)   - ajax选项。   - 表格的id(可选) - 当点击状态时,我们将编辑状态调用服务器以更新状态。 - 编辑状态后,我们调用提交按钮来调用RefreshAjaxList。按钮是“display:none” - 在这个例子中,我有一个控制器:带有2个动作的AjaxController:

enter code here
    public ActionResult UpdateStatus(int contactId, Status contactStatus)
    {
        ContactRepository repo = new ContactRepository();
        repo.UpdateStatus(contactId, contactStatus);
        return Json("success:true");
    }
    [AcceptVerbs(HttpVerbs.Post)]
    [ActionName("RefreshAjaxList")]
    public ActionResult RefreshContact()
    {
        ContactRepository repo = new ContactRepository();
        IList<Contact> list = repo.List();
        return PartialView("AjaxUc/AjaxList", repo.List());
    }

var status = {active:1,inactive:0};  function editStatus(cell,id,active){         如果(主动)             cell.innerHTML =“活跃”+                                  “无效”;         其他             cell.innerHTML =“活跃”+                                  “无效”;     }

function updateStatus(radio, id, active) {
    if (radio.checked != active) {
        if (confirm("Do you want to change the status of the contract?")) {
            if (active)
                cStatus = status.active;
            else
                cStatus = status.inactive;
            $.ajax({
                url: 'Ajax/UpdateStatus',
                dataType: "json",
                data: { contactId: id, contactStatus: cStatus },
                success: function(html) {
                    jQuery("#divAjaxList").submit();
                },
                error: function(request, desc, ex) {
                    alert(desc);
                }
            });
        }
    }
}

                                                                     ID                                           名字                                           姓                                           电话                                           电子邮件                                           状态                                                                                       |                                                                                                                                                                                                                                                                  ,);“&gt;                                                          

欲了解更多信息,请发送电子邮件至pnguyen2@firstlook.com进一步讨论。

希望这可以帮到你。

答案 2 :(得分:0)

为要显示的项目列表创建用户控件,并通过将json数据传递给UC将其呈现为部分。这将部分刷新

答案 3 :(得分:0)

您还可以使用JTemplate呈现JSON数据