gpt4 book ai didi

c# - ActionLink 在使用 System.Web.Mvc.RouteAttribute 时构建错误的 URL

转载 作者:行者123 更新时间:2023-11-30 23:02:19 25 4
gpt4 key购买 nike

我正在使用 MVC 5,我正在尝试通过 System.Web.Mvc.RouteAttribute 完成路由。

所以大多数操作都有效,但一个无效。

我创建了一个Delete-action 和一个Edit-action。两者看起来一样。

这里是 Delete 方法:

[Route("data/links/delete/{id}")]
public async Task<ActionResult> Delete(int? id)
{
// ....
return View(link);
}

// in the view, DeleteConfirmed is called on submit

[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
[Route("data/links/delete/{id}")]
public async Task<ActionResult> DeleteConfirmed(int id)
{
// ....
return RedirectToAction("Index");
}

这里是 Edit 方法:

[Route("data/links/edit/{id}")]
public async Task<ActionResult> Edit(int? id)
{
// ....
return View(link);
}

[HttpPost]
[ValidateAntiForgeryToken]
[Route("data/links/edit")]
public async Task<ActionResult> Edit([Bind(Include = "Id,LinkText,Url,Image,Description")] Link link)
{
// ....
return this.RedirectToAction("Index");
}

所以,它们的路由看起来是一样的。我称之为 GET-methods 的链接也是一样的:

@Html.ActionLink("Bearbeiten", "Edit", new { id = item.Id })
@Html.ActionLink("Löschen", "Delete", new { id = item.Id })

有趣的是:

the link to edit gets rendered: http://localhost:45132/data/links/edit?id=2
the link to delete gets rendered: http://localhost:45132/data/links/delete/2

为什么编辑渲染到edit?id=2,删除渲染到delete/2

编辑链接无效。当我在 http://localhost:45132/data/links/edit/2 手动输入编辑页面时然后链接有效。但是 ActionLink 给了我一个错误的 URL。有什么想法吗?

更新

我的RouteConfig.cs

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

routes.MapMvcAttributeRoutes();

routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}

最佳答案

我建议您使用 RouteLink helper method 代替。

Name 属性定义为您的 Route 属性,例如:

[Route("data/links/edit/{id}", Name = "MyRoute")]

然后使用:

@Html.RouteLink("Bearbeiten", "MyRoute", new { id = item.Id })

关于c# - ActionLink 在使用 System.Web.Mvc.RouteAttribute 时构建错误的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50530547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com