在 asp.net MVC6 中删除视图内的 if 语句的最佳方法
Best way to remove if statement inside view in asp.net MVC6
考虑以下代码:
@{
if ((string) ViewContext.RouteData.DataTokens["area"] == "Guest"){
<text>areaNav_link--selected</text>
}
}
我将如何删除该 if 语句?
如果您正在考虑内联 if 语句,那么您可以这样做:
@((string) ViewContext.RouteData.DataTokens["area"] == "Guest" ? "areaNav_link--selected" : string.Empty)
我更喜欢使用自定义 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 代码 re-use 在整个站点中使用它。
另一种方法是创建一个 TagHelper。
考虑以下代码:
@{
if ((string) ViewContext.RouteData.DataTokens["area"] == "Guest"){
<text>areaNav_link--selected</text>
}
}
我将如何删除该 if 语句?
如果您正在考虑内联 if 语句,那么您可以这样做:
@((string) ViewContext.RouteData.DataTokens["area"] == "Guest" ? "areaNav_link--selected" : string.Empty)
我更喜欢使用自定义 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 代码 re-use 在整个站点中使用它。
另一种方法是创建一个 TagHelper。