我应该如何干净地跟踪ASP.NET MVC中的所选项?

时间:2012-08-30 00:52:29

标签: c# asp.net-mvc

是否有更好的方法来跟踪所选项目,而不是在下面的代码中实现一行导航链接。

@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" }) |
...

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

1 个答案:

答案 0 :(得分:2)

您可以将其封装到一个小Func<bool, string>帮助器中,但这取决于它为您购买的内容。拥有它在你的问题中拥有它的方式使决定更接近链接,并且更清楚阅读&amp;理解,无需在调试过程中跳转到辅助方法。

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

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