【发布时间】:2017-08-05 15:11:35
【问题描述】:
如果不能解决问题,不要投反对票,因为我知道你的答案是什么,这就是为什么我最后在这里。
控制器
[Route("{Name}")]
public ActionResult Details(int? id, string Name)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Menu menu = db.Menus.Find(id);
if (menu == null)
{
return HttpNotFound();
}
return View(menu);
}
观看次数
@Html.ActionLink("Details", "Details", new { id = item.Id, Name = item.MenuName })
Route.config.cs
route.MapMvcAttributeRoutes();
输出:
如何获得这样的输出
localhost:2345/Blog 而不是 localhost:2345/Details/id=1?Name=Blog
【问题讨论】:
-
您不能只得到
../Blog(假设您使用默认路由,该网址将调用BlogController的Index()方法)。路线需要是可区分的。无论如何,您似乎还想为id传递一个值 -
是的,我使用的是默认路由。我怎样才能实现它我想创建一个动态页面。所以告诉我我将如何得到这个。甚至更改 route.config.cs 或其他任何内容。
-
你没有阅读我的评论吗?你不能。而且您的代码毫无意义。为什么在你从未使用过
Name时传递它的值。而且因为id的值将始终为null(因为它不包含在url 中),所以您的代码将始终返回BadRequest,这有点毫无意义。 -
我最好的猜测是你真的想要一个 slug 路线(例如按照 SO 路线),这样你就可以得到 .../Details/1/Blog` 在这种情况下参考this answer跨度>
-
您有任何示例如何从数据库中获取动态页面。使用 localhost:2345/page 之类的 url
标签: asp.net-mvc