在Microsoft网站上:http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-3我发现HTML.ActionLink
已被使用。作者描述了它的参数。在第3点,他引用路线参数值。它看起来像创建新对象。我根本得不到它。 第一个参数已经描述了Name
。为什么需要第三个参数?
问题: 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; }
}
}
答案 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)
{
}
有许多重载可用。