【问题标题】:MVC Routing - Dynamic url nameMVC 路由 - 动态 url 名称
【发布时间】:2023-03-05 02:21:01
【问题描述】:

我们有一个 MVC 应用程序,在我的主页中有不同的链接。每个链接在控制器中触发相同的操作。我需要根据用户单击的链接动态地为控制器显示不同的名称。请让我知道我们如何才能做到这一点。

例如: 现有:http://myapp.com/mycontroller/myaction

我需要什么:

http://myapp.com/mycontroller1/myaction

http://myapp.com/mycontroller2/myaction

http://myapp.com/mycontroller3/myaction

PS:mycontroller1、mycontroller2、mycontroller3 不是实际控制人

【问题讨论】:

  • 您可以通过将参数传递给您的控制器操作,然后执行 if 检查参数。最后基于参数,您可以返回所需的操作。我也想看看你的整个代码,以便我能以更好的方式回答。 :)
  • 嗨 Ajay,假设我在名为 TestController 的控制器中有一个 Index 方法,那么我的 URL 将是 myapp.com/Test/Index 。但是在我的 Index 方法中,我将有一个会话变量,我需要将 URL 中的控制器名称更改为不同的名称。例如myapp.com/Test1/Index。请注意,Test1 只是一个名称,但实际的控制器是 Test only。
  • 所以基本上你想路由到那个控制器路径(myapp.com/Test1/Index)......我是对的吗??
  • 没有。实际上,我需要为 URL 中的控制器使用不同的名称。对于 TestController 中的索引操作,我需要动态地在控制器的 URL 中使用不同的名称。在我需要myapp.com{动态名称}/索引的网址中。我应该能够根据会话变量提供动态名称。

标签: asp.net-mvc


【解决方案1】:

如果在 RouteConfig RegisterRoutes 中添加

routes.MapMvcAttributeRoutes();

在动作中你可以使用

[Route("mycontroller1/myaction")]
[Route("mycontroller2/myaction)]
[Route("mycontroller3/myaction)]
public ActionResult Index()
{
}

我认为是简单的方法

【讨论】:

  • 感谢您的回答。您能否解释一下如何根据会话变量值在索引操作中选择路由。
【解决方案2】:

您可以在所需链接上调用以下网址,这些网址会将唯一 ID 传递给 相同的控制器方法并基于该方法,视图将是 动态路由到所需路径..

触发器/事件:

 Link-1 http://myapp.com/mycontroller/myaction?id=1
 Link-2 http://myapp.com/mycontroller/myaction?id=2
 Link-3 http://myapp.com/mycontroller/myaction?id=3

C# 代码

public ActionResult Index(int id)
{
  if(id==1)
  {
    return View ("mycontroller1/myaction");
  }
  else if(id==2)
  {
    return View ("mycontroller2/myaction");
  }
  else if(id==3)
  {
    return View ("mycontroller3/myaction");
  }
  return View();
}

编码愉快!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-30
    • 1970-01-01
    • 2017-01-04
    • 2010-10-19
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多