我有一个名为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
有关。
答案 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.");
}