Ajax:Create成功时更新索引

时间:2012-10-04 12:38:40

标签: jquery ajax asp.net-mvc

我的Person模型有一个Index,一个GET Create和POST Create操作。我在父视图中显示索引,因此它被称为ChildAction。

我希望能够做的是将GET Create作为ChildAction调用到同一父视图或Index视图中。然后,当提交“创建”表单时,我希望刷新索引。

我该如何实施?我一直在玩这个使用Ajax.BeginForm但它似乎多次发布到Create动作所以我认为我的尝试是有缺陷的。我的主要问题是在Create POST成功时刷新Index操作。创建POST应该返回什么?

所有帮助和建议表示赞赏。

2 个答案:

答案 0 :(得分:1)

我不知道我是否完全了解你的概率,但我认为这可能有助于你 喜欢你用 成功:功能(数据){...一些代码...} 你还必须在这里再使用一个属性

onComplete:function(data){... some code ...}

现在只需在ajax调用完成后编写您想要执行的代码。 但是在完整的函数中写下它

答案 1 :(得分:0)

以下是如何设置的:

public class HomeController : Controller
{
    public ActionResult MainAction()
    {
        return View();
    }

    [ChildActionOnly]
    public ActionResult Index()
    {
        return PartialView();
    }

    [ChildActionOnly]
    public ActionResult Create()
    {
        return PartialView();
    }

    [HttpPost]
    public ActionResult ProcessCreate(SomeViewModel model)
    {
        return PartialView("Index");
    }
}

和相应的观点:

~/Views/Home/MainAction.cshtml

<div>
    This is the main view
</div>

<div id="indexContainer">
    @{Html.RenderAction("Index");}
</div>

~/Views/Home/Index.cshtml

<div>
    This is the index view @DateTime.Now.ToLongTimeString()
</div>

<div>
    @{Html.RenderAction("Create");}
</div>

~/Views/Home/Create.cshtml

@using (Ajax.BeginForm("ProcessCreate", "Home", new AjaxOptions { UpdateTargetId = "indexContainer" }))
{
    <button type="submit">OK</button>
}

另外,不要忘记为Ajax。*帮助程序包含jquery.unobtrusive-ajax.min.js脚本:

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>

您会注意到我已经重命名了Create POST操作,否则当在表单回发后调用Html.RenderAction帮助程序时,它将再次执行POST操作,您将以无限循环结束。