如何更改ASP.NET MVC中的默认url



我有一个显示数据库值的表,我有3个@Html.ActionLink,就像这个

@Html.RouteLink("Edit", "StudentGet", new { id = item.StudentId }) |
@Html.ActionLink("Details", "Details", new { id=item.StudentId }) |
@Html.ActionLink("Delete", "Delete",  new { id=item.StudentId })

这些是在我创建实体控制器时自动构建的。当我点击这些链接时,我会到达新的URL:学生(我的控制器名称(/Edit/1.(例如(。

如何将我的URL更改为其他内容,如:stu-info/edit info/id=1

此外,我的RouterConfig.cs:

public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapMvcAttributeRoutes();
} 
}

和操作StudentsController中编辑

[Route("~/stu-info/get-info/{id?}", Name = "StudentGet")]
public ActionResult Edit(byte? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Student student = db.Students.Find(id);
if (student == null)
{
return HttpNotFound();
}
return View(student);
}
[Route("~/stu-info/edit-info")]
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "StudentId,LirstName,LastName,Age,SchoolName")] Student student)
{
if (ModelState.IsValid)
{
db.Entry(student).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(student);
}

我试图更改@Html.ActionLink中的第二个参数,它可以更改URL(我不知道如何更改Students的URL(,但它不起作用,因为它可能无法识别编辑操作。

实现它的最简单方法是使用属性路由

[Route("~/stu-info/get-info/{id?}" Name="StudentGet")]
public ActionResult Edit(byte? id)
......

[Route("~/stu-info/edit-info" )]
public ActionResult Edit(Student student)
.....

也许你需要改变你的行动链接,因为太了

@Html.RouteLink("Edit", "StudentGet", new { id=item.StudentId }) 

并将MapMvcAttributeRoutes添加到您的路由配置中

public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
......
}

实现它的最简单方法是使用属性路由

[路由("登录"(]

public ActionResult登录(字符串ReturnUrl="(

最新更新