我有一个控制器“Contracts”和3个GET方法:“All”,“Focus”,其中包含网格,“Edit”用于编辑,还有一个POST方法:“Edit”。 用户可以使用按钮从任何网格访问“编辑”。但是在执行POST之后,我想将它们重定向到发送请求的操作。 例如:
或
答案 0 :(得分:1)
public ActionResul All()
{
var items=dbContext.Items;
return View("All",items);
}
<{1>}在All
视图中,您将获得包含数据的网格。从网格中选择一条记录并单击编辑将转到第二个用于编辑的Action方法。
在此处调用编辑方法时,您可以传递一些标记。您可以在构建像这样的编辑链接时添加
@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)
现在编辑操作方法,您读取参数并将其设置为编辑视图模型的属性值。您可能希望将此属性添加到ViewModel。
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动作方法中处理它。检查From属性值并确定保存后重定向的位置
[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 :(得分:0)
我认为您的帖子编辑可以像这样
点击具有(编辑/全部/ 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 }
);