qua*_*els 5 c# asp.net asp.net-mvc asp.net-mvc-2
我很难理解下面的C#代码.此代码取自Steven Sanderson的Pro ASP.NET MVC 2 Framework.代码基本上根据类别列表创建URL.
这是代码:
Func<string, NavLink> makeLink = categoryName => new NavLink {
Text = categoryName ?? "Home",
RouteValues = new RouteValueDictionary(new {
controller = "Products",
action = "List",
category = categoryName,
page = 1
}),
IsSelected = (categoryName == currentCategory)
Run Code Online (Sandbox Code Playgroud)
很多东西都在这里发生.我猜它正在定义一个函数,它需要两个类型为string和NavLink的参数.然后我看到Lambda categoryName => new NavLink etc....我认为它所做的只是创建一个实例NavLink.
然后在同一个Controller动作中调用该函数:
// Place home link on top
List<NavLink> navLinks = new List<NavLink>();
navLinks.Add(makeLink(null));
// Add link for each distinct category
var categories = productsRepository.Products.Select(x => x.Category.Name);
foreach (string categoryName in categories.Distinct().OrderBy(x => x))
navLinks.Add(makeLink(categoryName));
Run Code Online (Sandbox Code Playgroud)
我可以说它正在制作一个NavLink列表.我不明白为什么史蒂文桑德森这样写道.难道他没有写过类似的东西:
var categories = productsRepository.Products.Select(x => x.Category.Name);
foreach (string categoryName in categories.Distinct().OrderBy(x => x))
{
var newlink = new Navlink{
text = categoryName,
RouteValues = new RouteValueDictionary(new {
controller = "Products",
action = "List",
category = categoryName,
page = 1
}),
IsSelected = (categoryName == currentCategory)
}
navLinks.Add(newlink);
}
Run Code Online (Sandbox Code Playgroud)
史蒂文与我的方式相比有什么优势吗?
| 归档时间: |
|
| 查看次数: |
381 次 |
| 最近记录: |