HTML.ActionLink方法中的路由参数值是什么?它的语法是什么?

时间:2014-06-23 18:31:33

标签: html asp.net-mvc-4 actionlink

在Microsoft网站上:http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-3我发现HTML.ActionLink已被使用。作者描述了它的参数。在第3点,他引用路线参数值。它看起来像创建新对象。我根本得不到它。 第一个参数已经描述了Name。为什么需要第三个参数?

  1. 链接文字,将显示流派名称
  2. 控制器操作名称(浏览)
  3. 路由参数值,指定名称(流派)和值(流派名称)
  4. 问题: HTML.ActionLink中的路由参数值是什么,ti的语法是什么?


    <ul>
        @foreach (var genre in Model)
        {
            <li>@Html.ActionLink(genre.Name,
    "Browse", new { genre = genre.Name })</li>
        }
    </ul>
    

    控制器:

      public ActionResult Browse(string genre) {
                //string message = HttpUtility.HtmlEncode("Store.Browse, Genre =" + genre);
                var genreModel = new Genre { Name = genre };
                return View(genreModel);
            }
    

    类类型:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    namespace MvcMusicStore.Models {
        public class Genre {
            public string Name { get; set; }
        }
    }
    

2 个答案:

答案 0 :(得分:2)

将Route参数传递给Action请求的查询字符串。在Controller操作中,您会看到方法签名是Browse(字符串类型),这意味着需要名为genre的参数。动作链接的第三个参数就是这样 - 它添加了一个参数类型,其值被赋值给对象类型的属性名称。

ActionLink参数映射如下:

@Html.ActionLink(
genre.Name,      // display of the link in a tag
"Browse",        // name of the action, it redirects to public ActionResult Browse(string genre)
new { 
    genre =      //name of the parameter for the controller action Browse(string **genre**)
    genre.Name   // value of the parameter
})

答案 1 :(得分:2)

First参数是Display Name,第二个参数是action name,第三个参数实际上是controller action的参数,例如:

@Html.ActionLink("LinkText",
                 "Browse", 
                  new { parameter1 = "1",parameter2 = "2" })

你的行动现在看起来像这样:

public ActionResult Browse(string parameter1,string parameter2)
{

}

有许多重载可用。

请参阅Documentation HERE