0

我目前正在使用 ViewModels 绑定到我的所有 CRUD 操作,但是有一些操作方法只返回部分视图:

public ActionResult Create(int parentId)
{
    var viewModel = new MyCreateViewModel();
    return PartialView("_Create", viewModel);
}

这些动作将通过 AJAX 从不同的视图(不同的实体)调用,并显示在 jQuery 对话框中。对话框按钮将通过 处理POST表单$("#form").submit(),另一个操作方法将处理表单,理想情况下重定向到调用部分视图的父视图

[HttpPost]
public ActionResult Create(int parentId, MyCreateViewModel viewModel)
{
    //Process the viewModel, map to EF models and persist to the database

    return RedirectToAction(/*What should I insert here?*/);
}

由于我不知道POST这个方法是哪个视图,我怎么知道我应该重定向到哪个视图?

4

2 回答 2

1

您可以在客户端重定向,而不是在操作方法中这样做。在action方法中,可以返回一个操作成功或失败的结果。在客户端,使用 $.ajax 处理结果

        $('#form').submit(function () {
        var self = $(this);
        if (self.valid()) {
            $.ajax({
                type: "POST",
                url: self.attr('action'),
                data: self.serialize(),
                success: function (data) {
                    if (data.Success == true) {
                        //redirect
                    } else{
                        //Error handling
                    }
                },
                error: function (ex) {
                        //Error handling
                }
            });
        }
        return false;
    });
于 2013-07-10T01:44:16.773 回答
1

我会向您的 viewModel 添加一个字符串属性,其中包含您要返回的视图的名称

[HttpPost]
public ActionResult Create(int parentId, MyCreateViewModel viewModel)
{
    //Process the viewModel, map to EF models and persist to the database

    return RedirectToAction(viewModel.ViewToRender);
}
于 2013-07-10T01:35:56.363 回答