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调用的重定向。