Asp.net mvc 4 从HttpPost方法重定向到视图

Asp.net mvc 4 从HttpPost方法重定向到视图,asp.net-mvc-4,Asp.net Mvc 4,我有一个名为Catalogs的页面,该页面将Id作为默认参数,页面上有一个addcatalog按钮,可将用户重定向到新页面以创建全新的目录 此方法处理该逻辑,此方法最初是一个JsonResult方法,我正在尝试重新调整其用途: [HttpPost] public ActionResult CreateCatalog(NewCatalogViewModel data) { var newCatalog = new Catalog

我有一个名为
Catalogs
的页面,该页面将Id作为默认参数,页面上有一个
addcatalog
按钮,可将用户重定向到新页面以创建全新的目录

此方法处理该逻辑,此方法最初是一个
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(); }
我已经看了很多答案,但我很难找到一个适用于我正在尝试做的事情的答案


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

只需重定向到操作,如果它在同一个控制器中,请执行以下操作:

编辑:

通过刚刚保存的模型返回相同的
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视图
,其中包含有关新模型的所有信息。

我发现实现上述目标的最简单方法是,基于成功,将我想要的任何数据传递回您重定向到的视图

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.");
            }

我尝试了这个方法,它只是获取原始HTML,并以警报的形式将其转储到页面上。与下面的建议相同。在我的
CatalogConfig
页面上找不到任何标记或逻辑。我不确定这将如何完成我正在努力做的事情。我认为问题在于我没有一个名为
CreateCatalog
的视图,这本来是一个
JsonResult
方法,但我正在尝试重新调整它的用途以重定向。我不知道如何从jsonmethod重定向,所以我更改了方法类型。我最终处理了来自ajax调用的重定向。