如何将查询字符串添加到actionLink?

时间:2018-10-29 17:14:11

标签: asp.net-mvc razor

以下链接为以下网址:http://localhost:11111/files/Details/3

  @Html.ActionLink("Details", "Details", "mycontroller", new { id = item.id },null)

但是我正在尝试使用类似http://localhost:11111/files/Details?id=3http://localhost:11111/files/Details.aspx?id=3的url参数

如何获取操作链接以显示类似详细信息的网址?i = 3

这是我的控制器视图:

public ActionResult Details(int? id)
    {
       ...
        return View();
    }

2 个答案:

答案 0 :(得分:1)

可以在我们项目的Global.asax文件中的RegisterRoutes方法下找到路由代码。

我已经在RegisterRoutes方法中看到一个cookie。

routes.MapRoute(
 "Default",     // Route name
 "{controller}/{action}/{id}",     // URL with parameters
 new { controller = "Home", action = "Index", id = "" }    // Parameter defaults);

使用上面的MapRoute方法,我们定义了一条新路线。

样本;

public class HaberController : Controller
{
      public ActionResult Listele()
      {
           // Listing codes will be written
            return View("Listele");
      }

      public ActionResult Detay(string HaberId)
      {
           // Detail codes will be written
           return View("Detay");
      }
}

我们转到我们的Global.asax文件,并如下进行编辑。

public static void RegisterRoutes(RouteCollection routes)
{
       routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

       routes.MapRoute(
             "HaberListeleme",
             "Haber",
             new { controller = "Haber", action = "Listele" }
       );

       routes.MapRoute(
            "HaberDetay",
            "Haber/{id}",
            new { controller = "Haber", action = "Detay" }
        );

       routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = "" } // Parameter defaults
        );
}

如果我们按以下方式进行路由:

routes.MapRoute(
      "HaberDetay",
      "Haber/{*Id}",
      new { controller = "Haber", action = "Detay" }
);

因此,如果我们通过在参数名称旁边添加*来编写*,则该字符将被发送到Controller中Detail方法的相关参数,无论它在“新闻/网址”标签后的含义是什么。

例如:

  

http://www.doguhanaydeniz.com/Haber/Turkiye/Guncel/34389

如果请求的网址为土耳其/当前/ 34389将作为参数发送。

答案 1 :(得分:0)

为什么要在链接中看到参数名称?

Asp.Net MVC使用用户友好的URL。

如果您已使用MVC模板在Visual Studio中创建了一个项目,则默认情况下,可能会将您的路由配置为在控制器/操作/之后像id一样解释参数。

因此,您的操作中id参数的值将通过模型绑定自动替换为您网址中显示的id号。