重定向至发送请求的操作
本文关键字:操作 请求 重定向 | 更新日期: 2023-09-27 18:32:22
>我有一个控制器"合同"和3个GET方法:"全部","焦点",其中包含网格和用于编辑的"编辑",以及一个POST方法:"编辑"。用户可以使用按钮从任何网格访问"编辑"。但是在执行 POST 后,我想将它们重定向到发送请求的操作。例如:
- 打开"焦点"网格
- 选择行
- 点击的编辑
- 进行更改,然后点击保存
- 最后重定向到"焦点"网格(!
或
- 打开"全部"网格
- 选择行
- 点击的编辑
- 进行更改,然后点击保存
- 最后重定向到"全部"网格(!
public ActionResul All()
{
var items=dbContext.Items;
return View("All",items);
}
在All
视图中,您将拥有包含数据的网格。从网格中选择一条记录并单击"编辑"将转到"编辑"的第二个操作方法。
在此处调用编辑方法时,您可以传递一些标志。您可以在构建这样的编辑链接时添加它
@Html.ActionLink("Edit","Edit","Item",new { @id=item.Id, @from="all"},null)
所以我的编辑将有一个查询字符串键" from
",值为" all
同样,在你是Focus
的视图中,你可能会传递不同的值
@Html.ActionLink("Edit","Edit","Item",new { @id=item.Id, @from="focus"},null)
现在,编辑操作方法读取参数并将其设置为编辑视图模型的属性值。 您可能希望将此属性添加到视图模型中。
public ActionResult Edit(int id,string from)
{
EditItemViewModel item=GetItem(id);
item.From=from;
return View(item);
}
并且此视图将具有编辑表单。我们将From
的值保留在表单元素中,以便我们可以在表单帖子中使用它。
@model EditItemViewModel
@using(Html.BeginForm())
{
@Html.HiddenFor(m => m.Id);
@Html.TextBoxFor(m => m.ItemName)
@Html.TextBoxFor(m => m.ItemDesc)
@Html.HiddenFor(m => m.From)
<input type="submit" value="Update" />
}
用户可以在其中编辑并再次提交。 您可以在 HttpPost Edit 操作方法中处理它。检查"发件人"属性值,并决定保存后重定向到的位置
[HttpPost]
public ActionResult Edit(EditItemViewModel model)
{
if(ModelState.IsValid)
{
//Save data
if(model.From=="all")
return RedirectToAction("All");
else
return RedirectToAction("Focus");
}
return View(model);
}
我认为你的帖子编辑可以这样
单击具有(编辑/全部/1 或编辑/焦点/2)的网格行后,您可以重定向到此
public ActionResult Edit(int id, yourviewmodel viewmodel,string YourFilter)
{
return RedirectToAction(YourFilter);
}
在 global.asax 中,您可以像这样设置路由以进行编辑提交
routes.MapRoute(
"filters",
"All",
new { controller = "Contracts", action = "All" }
);
routes.MapRoute(
"filters1",
"focus",
new { controller = "Contracts", action = "focus" }
);
对于编辑,请单击
routes.MapRoute(
"EditFilter",
"Edit/{YourFilter}/{id}",
new { controller = "Contract", action = "Edit",YourFilter = UrlParameter.Optional,id = UrlParameter.Optional }
);