假设我有一个名为artikel的模型。 本文包含 Html"正文"文本。和一个单词标题。
然后我想创建一个系统,在其中我可以使用一个视图来呈现"文章"模型的所有正文内容。
但使用文章标题属性为网站创建 URL。
所以如果我有 2 篇文章。 一个标题为"关于",另一个标题为"联系人">
我最终会得到像这样的网址 "网站/关于" 和 "站点/联系人">
由于我正在尝试从数据源进行此操作,因此我需要某种方法来执行此动态操作。 所以我不能只为每个工件制作控制器。(无论如何,如果我有很多文章,那就不好了(
我一直在尝试在我的RouteConfig中设置一个mapRoute。 但无论如何都找不到可以做到这一点的。
我在网上搜索它,尝试了这些解决方案。
http://www.dotnet-stuff.com/tutorials/aspnet-mvc/understanding-url-rewriting-and-url-attribute-routing-in-asp-net-mvc-mvc5-with-examples
.Net MVC 中的 URL 重写
https://www.youtube.com/watch?v=h405AbJyiH4
https://forums.asp.net/t/2094370.aspx?How+To+Create+URL+Rewrite+In+ASP+NET+C+using+MVC+
但是没有运气。 任何知道如何做到这一点的人,或者可以帮助我朝着正确的方向前进的人。?
有很多方法可以解决这个问题,例如您可以将Artikel设置为默认控制器,创建新路由或自定义路由等。我建议在 urlwebsite/artikel/pagename
中包含 artikel 以查找文章。
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
name: "Artikel",
url: "artikel/{id}",
defaults: new { controller = "Artikel", action = "Index", id = UrlParameter.Optional }
);
//default and other routes go here, after Artikel
}
在 Artikel 控制器中:
public ActionResult Index(string id)
{
Artikel model = Database.GetArticle(id);
return View(model);
}
型:
public class Artikel
{
public string Title { get; set; }
public string Body { get; set; }
}
和观点:
@model MyApplication.Models.Artikel
@{
ViewBag.Title = "Index";
}
<h2>@Model.Title</h2>
<span>@Model.Body</span>