Asp.net mvc 4 MVC中URL中的问号

Asp.net mvc 4 MVC中URL中的问号,asp.net-mvc-4,Asp.net Mvc 4,当我动态生成超链接时,我会在URL中添加一个问号,它来自何处?它的含义是什么 <li> @Html.ActionLink(@genre.Name, "Browse", new { genre = genre.Name })</li> http://localhost:26239/Store/Browse?genre=Disco @Html.ActionLink(@genre.Name,“Browse”,新的{genre=genre.Name}) http://loc

当我动态生成超链接时,我会在URL中添加一个问号,它来自何处?它的含义是什么

<li> @Html.ActionLink(@genre.Name, "Browse", new { genre = genre.Name })</li>

 http://localhost:26239/Store/Browse?genre=Disco
  • @Html.ActionLink(@genre.Name,“Browse”,新的{genre=genre.Name})
  • http://localhost:26239/Store/Browse?genre=Disco
    这就是所谓的。这是在URL中传递变量的一种非常常见的方法。

    这称为。在URL中传递变量是一种非常常见的方法。

    如果在与操作方法匹配的路由中没有定义“流派”作为参数,它将作为查询字符串传递。

    如果在与操作方法匹配的路由中没有定义“流派”作为参数,它将作为查询字符串传递。

    有一个典型的示例。对于BookDetail,我们有一条路线:

    routes.MapRoute(
       name: "BookDetail",
       url: "{controller}/{action}/{id}",
       defaults: new { controller = "Book", action = "Detail", id = UrlParameter.Optional }
    );
    
    第一个示例-带有路由规则中定义的一个参数
    id

    <li>@Html.ActionLink(@item.Name, "Detail", new { id = item.Id })</li>
    
    http://localhost:26239/Book/Detail/221
    
    第三个示例-没有参数(因为
    id
    是可选的)

  • @Html.ActionLink(@item.Name,“Detail”)
  • http://localhost:26239/Book/Detail
    有一个典型的例子。对于BookDetail,我们有一条路线:

    routes.MapRoute(
       name: "BookDetail",
       url: "{controller}/{action}/{id}",
       defaults: new { controller = "Book", action = "Detail", id = UrlParameter.Optional }
    );
    
    第一个示例-带有路由规则中定义的一个参数
    id

    <li>@Html.ActionLink(@item.Name, "Detail", new { id = item.Id })</li>
    
    http://localhost:26239/Book/Detail/221
    
    第三个示例-没有参数(因为
    id
    是可选的)

  • @Html.ActionLink(@item.Name,“Detail”)
  • http://localhost:26239/Book/Detail
    因为您使用
    new{genre=genre.Name}
    向路由添加了一个值。由于没有为名为
    genre
    =的参数定义路由,即
    {controller}/{action}/{genre}
    它被添加为查询字符串参数,而不是路由参数。如果您确实定义了一个路由,它将生成为
    ../Store/Browse/Disco
    ,因为您使用
    new{genre=genre.Name}
    向路由添加了一个值。由于没有为名为
    genre
    =的参数定义路由,即
    {controller}/{action}/{genre}
    它被添加为查询字符串参数,而不是路由参数。如果您确实定义了路由,它将生成为
    ../Store/Browse/Disco