难以读取这个剃刀语法嵌套if else

时间:2014-02-03 09:11:28

标签: asp.net-mvc razor

我在阅读来自现有模板的剃刀语法时遇到问题。

<div class="@(HasText(columnclass) ? columnclass == "myColumns-1" || columnclass == "myColumns-2" ? "col-md-12" : columnclass == "myColumns-12" ? "col-md-6" : "col-md-12" : "col-md-12")">

以上是否与:

相同
 @if(HasText(columnclass))
{
    if(columnclass == "myColumns-1" || columnclass == "myColumns2")
    {
        <div class="col-md-12"></div>
    }

    else if (columnclass == "myColumns-12")
    {
        <div class="col-md-6"></div>
    }
    else
    {
        <div class="col-md-12"></div>
    }

}
else
{
    <div class="col-md-12"></div>
}

第一个复杂的剃刀语法是否可以在html.extension中使用,甚至可以在func&lt;&gt;中使用?

1 个答案:

答案 0 :(得分:0)

你可以写一个简单的扩展 -

public static class DivExtensions
{
    public static MvcHtmlString Div(this HtmlHelper html, string input)
    {
        if(String.IsNullOrWhiteSpace(input))
            return new MvcHtmlString("<div class=\"col-md-12\"></div>");

         if (input == "myColumns-12")
             return new MvcHtmlString("<div class=\"col-md-6\"></div>");

         return new MvcHtmlString("<div class=\"col-md-12\"></div>");
    }
}

用法 -

@using MVC.NameSpaceOfExtension

@Html.Div("myColumns-6")

注意:我无法保证扩展方法中的逻辑。请在您身边进行测试,如果逻辑有问题,请将其替换为您的逻辑。