【问题标题】:Asp.net Core Routing EquivalentAsp.net Core 路由等效
【发布时间】:2021-09-06 00:25:30
【问题描述】:

下午好,我在 ASP.Net Core 5 中有以下问题,我正在寻找与我在 .Net Framework 的 asp.net MVC 中制作的以下代码的等效项。

这是在路由中应用程序的 App.start 中配置的

        //Actualidad
        routes.MapRoute(
        name: "actualidad",
        url: "actualidad",
        defaults: new { controller = "seccion", action = "detalle", id = 2 });

.net Core 使用以下格式:

            app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "historias",
                pattern: "{controller=Podcast}/{action=seccion}/{id=?}");

        });

但我找不到默认将值传递给 id 的方法。

【问题讨论】:

  • 如果您有int? id 作为参数,您可以使用PodcastID = id ?? 2 之类的参数来获得相同的结果。我意识到这不是答案,但可能是一个解决方案
  • 我想要做的是将 id 值设置为 hard。在 MVC 中,我可以按照我在上面的代码中的注释分配 id,但在 .Net 核心中,它不会返回控制器中 ID 的值

标签: .net asp.net-core routes


【解决方案1】:

你可以在net core中使用相同的

app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                name: "default",
              pattern: "{controller=Home}/{action=Index}/{id?}");

      endpoints.MapControllerRoute(
                  name: "historian",
                  pattern: "seccion/{id=2}",
                  defaults: new { controller = "Podcast", action = "Seccion" });

            });

它将从

public partial class PodcastController : Controller
{
   public IActionResult Seccion(int id)
    {
         // id will be 2

或者你可以试试这个网址

http://localhost:xxx/seccion

它将使用输入参数 id=2 进行分段操作

【讨论】:

  • 您好,感谢您的回复。尝试这样做,但在控制器中,id 的值永远不会得到。应该是 2
  • @DanielLazarte 抱歉,打错了。将名称更改为默认值。
  • 如果我注意到了。但在控制器中以同样的方式它不会返回 id 的值
  • @DanielLazarte 它将在 Seccion 中返回。控制器不返回任何内容
  • 当然可以。在操作部分它应该返回 id = 2 但它没有
猜你喜欢
  • 2021-09-04
  • 1970-01-01
  • 2016-10-22
  • 2019-10-21
  • 1970-01-01
  • 1970-01-01
  • 2019-07-04
  • 2018-12-19
  • 2018-08-28
相关资源
最近更新 更多