重定向到从HttpPost方法查看

时间:2014-05-05 14:02:24

标签: asp.net-mvc-4

我有一个名为Catalogs的页面,它将Id作为默认参数,页面上有一个Add Catalog按钮,用户将用户重定向到新页面以创建全新的目录。< / p>

此方法处理该逻辑,此方法最初是JsonResult方法,我试图重新调整用途。:

[HttpPost]
        public ActionResult CreateCatalog(NewCatalogViewModel data)
        {
            var newCatalog = new Catalog
            {
                RelationshipId = data.RelationshipId,
                Name = data.CatalogName,
                OutboundProcessorID = data.OutboundProcessorID,
                Enabled = true,
                Aggregate = data.IsAggregate
            };
            pdbUOW.Catalog.Insert(newCatalog);
            pdbUOW.Save();

            InsertDefaultCatalog(data, newCatalog);


            return CatalogConfig(newCatalog.Id); //Redirect should happen here
        }

我想将用户重定向回目录页面,作为重定向的一部分传入新创建的目录ID。

public ActionResult CatalogConfig(int? id)
        {  return View(); }

我已经在SO上查看了多个答案,但我找不到适用于我想要做的事情的答案。

在跟踪代码时,我可以看到我的CatalogConfig动作结果确实已被调用,但它不会呈现视图。我在这里失踪了什么?我知道它与使用我需要使用的POST有关。

2 个答案:

答案 0 :(得分:0)

只需重定向到该操作,如果它在同一个Controller中,则执行如下操作:

修改

返回通过您刚刚保存的模型的相同CreateCatalog

[HttpPost]
public ActionResult CreateCatalog(NewCatalogViewModel data)
{
    var newCatalog = new Catalog
    {
        RelationshipId = data.RelationshipId,
        Name = data.CatalogName,
        OutboundProcessorID = data.OutboundProcessorID,
        Enabled = true,
        Aggregate = data.IsAggregate
    };
    pdbUOW.Catalog.Insert(newCatalog);
    pdbUOW.Save();

    InsertDefaultCatalog(data, newCatalog);


    return View(newCatalog);
}

这将向您的CreateCatalog View显示有关新模型的所有信息。

答案 1 :(得分:0)

我发现完成上述操作的最简单方法是,基于成功将我想要的任何数据传回给我重定向的视图。

if (self.CatalogName()) {
                if (confirm("Are you sure you want to create a catalog with the following name?\n" +
                    "Catalog Name: " + self.CatalogName())) {
                    $.ajax({
                        url: '/pdb/PDBConfig/CreateCatalog/',
                        type: 'POST',
                        contentType: 'application/json; charset=utf-8',
                        data: data,
                        success: function (status) {
                            if (status.error) { alert(status.error); }
                            else { window.location.href = "/pdb/PDBConfig/CatalogConfig/" + status; }//Pass back the status containing the url id
                        }
                    });
                }
            } else {
                toastr.warning("You must enter a name for your catalog.");
            }