1

有没有比我在下面实现一行导航链接的代码中更好的方法来跟踪所选项目。

@Html.ActionLink(       
        "PreApproval", 
        "Summary", 
        new { mode = "preapproval" }, 
        new { @class = Model.Mode == "preapproval" ? "selected" : "notselected" }) |
@Html.ActionLink(
        "ActionNeeded", 
        "Summary", 
        new { mode = (string)null }, 
        new { @class = string.IsNullOrWhiteSpace(Model.Mode) ? "selected" : "notselected" }) |
...

我应该尝试封装菜单导航的功能还是这是一种标准方法?

4

1 回答 1

2

你可以把它封装成一个小Func<bool, string>帮手,但这取决于它给你买了什么。以您在问题中的方式使用它可以使决策更接近链接,并且更易于阅读和理解,而无需在调试期间跳转到辅助方法。

如果你有 20 个或更多这样的链接,我可能会重构。这样,例如,如果您的 css 类名称从“selected/notselected”更改为“current/notcurrent”或其他内容,您可以在 1 个位置进行更新。

另一件事,在 MVC4 中,如果 CSS 类名是 null 或空字符串,Razor 根本不会渲染类属性(将省略它)。这样,您可以将“选定”类放在选定的链接上,并摆脱“未选定”类。

于 2012-08-30T09:37:24.807 回答