我有一个应用程序,它根据表中的“Name”列标题显示数据,该表在路由配置中声明为id:
{controller}/{action}/{name}
defaults: new { controller = "Home", action = "Job", name = UrlParameter.Optional }
名称不是主键,因为页面将根据查询字符串显示多个具有相同名称的行。应用程序运行良好,CRUD功能正常。我唯一的问题是从“编辑”或“删除”页面发布后将用户重定向到显示页面,因为我想将用户返回到显示具有相同“名称”的数据行的页面,但我似乎只能访问不是我想要的ID(主键)
例如:
本地主机:8888 /主页/工作/乔纳森
Jonathan | Column2 | Column3
Jonathan | Column2 | Column3
Jonathan | Column2 | Column3
Jonathan | Column2 | Column3
当编辑或删除一行时,URL将是:/ Home / edit?id = 48,我试图找出如何获得“名称”列字段(在控制器内),基于所选行的“ID”,并在发布后将用户返回到URL中具有“名称”的页面。
在View中进行后退按钮非常简单:
@{
var name= Model.Name;
}
<a href="../home/job/@name" class="cancel">Cancel</a>
但是,在发布表单
时,我似乎无法弄清楚路由答案 0 :(得分:0)
我已经想通了,通过将“Name”传递给查询字符串,使用Html.ActionLink,然后您可以访问URL中的“Name”以与控制器一起使用。
链接:强>
@Html.ActionLink("Edit", "edit", new { id=item.id, name=item.Name})
<强>控制器:强>
[HttpPost]
public ActionResult Edit(Table1 table1)
{
var query = RouteData.Values["name"];
var back = "../job/" + query;
if (ModelState.IsValid)
{
_db.Entry(table1).State = System.Data.EntityState.Modified;
_db.SaveChanges();
return RedirectPermanent(back);
}
return View(table1);
}