【问题标题】:MVC 4, create URL dynamic for pagesMVC 4,为页面动态创建 URL
【发布时间】:2018-11-22 23:01:27
【问题描述】:

假设我有一个名为 artikel 的模型。 本文包含 Html“正文”文本。和一个单词标题。

然后我想制作一个系统,我可以在其中使用一个视图来渲染所有“文章”模型的正文内容。

但使用文章标题道具。为网站创建 URL。

所以如果我有 2 篇文章。 一个标题为“关于”,一个标题为“联系方式”

我最终会得到像这样的 Url “网站/关于” 和 “网站/联系人”

由于我试图从数据源中进行此操作,因此我需要一些方法来实现此动态。所以我不能只为每个 artikel 制作控制器。 (如果我有很多文章,那就不好了)

我一直在尝试在我的 RouteConfig 中设置 mapRoute。但无论如何都找不到可以做到这一点。

我在网上搜索它,并尝试了这些解决方案。

http://www.dotnet-stuff.com/tutorials/aspnet-mvc/understanding-url-rewriting-and-url-attribute-routing-in-asp-net-mvc-mvc5-with-examples

URL Rewriting in .Net MVC

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+

但没有运气。 任何知道如何做到这一点的人,或者可以帮助我朝着正确的方向发展。?

【问题讨论】:

  • 检查这篇文章可能是你想要的或者给你另一个想法
  • @AliBesharatinia 抱歉。但是您忘记发布链接了吗?
  • 问题是,url site/About 会覆盖任何其他的。你怎么知道 About 不是控制器?
  • 拥有 example.com/artikel/About 和 example.com/artikel/Contact 等就足够了吗?或者你需要example.com/About。如果是前者,您可以有一个将文章名称作为路由参数获取的操作。然后,您可以从数据源中检索适当的页面并以某种方式呈现它。

标签: c# asp.net-mvc url dynamic routeconfig


【解决方案1】:

有很多方法可以解决这个问题,比如你可以将Artikel设置为默认控制器,创建新路由,或者自定义路由等。我建议在url中包含artikelwebsite/artikel/pagename查找文章.

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>

【讨论】:

  • 我将它与 som URL rewrite 结合使用。
猜你喜欢
  • 2018-11-03
  • 1970-01-01
  • 2015-03-15
  • 2011-10-26
  • 1970-01-01
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多