在asp.net MVC6中删除if语句内部的最佳方法

时间:2016-01-18 11:27:04

标签: c# asp.net asp.net-mvc asp.net-mvc-5 asp.net-core-mvc

请考虑以下代码:

@{
       if ((string) ViewContext.RouteData.DataTokens["area"] == "Guest"){                                                                              
             <text>areaNav_link--selected</text>
       }
}

我如何删除if语句?

2 个答案:

答案 0 :(得分:2)

我更喜欢使用自定义html助手来删除逻辑。

例如,您可以按如下方式调用它:

@Html.WelcomeText()

可以按如下方式将逻辑移动到帮助程序中:

public static MvcHtmlString WelcomeText(this HtmlHelper htmlHelper)
{
    var text = string.Empty;
    var areaName = ViewContext.RouteData.Values["area"].ToString();

    if (areaName == "Guest")          
    { 
       text = "Hello Guest";
    }
    return new MvcHtmlString(text);
}

通过这种方式,您可以使用一行Razor代码在整个站点中重复使用它。

另一种方法是创建TagHelper

答案 1 :(得分:0)

如果您正在考虑内联if语句,那么您可以执行类似的操作:

@((string) ViewContext.RouteData.DataTokens["area"] == "Guest" ? "areaNav_link--selected" : string.Empty)