如果在剃刀视图中处理

时间:2012-02-15 19:42:31

标签: c# asp.net-mvc-3 razor

如果条件使用?运算符

,是否有更好的方法可以实现此目的
@if (!String.IsNullOrEmpty(Model.valores))
        {
            @crearContenedorTipo(
                Model.IDTipodato,
                Model.minimo, Model.maximo,
                Model.valores.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries),
                Model.salida, Model.IDCampo)
            @Html.ValidationMessageFor(modelItem => Model.Nombre)
        }
        else 
        { 
            @crearContenedorTipo(
                Model.IDTipodato,
                Model.minimo, Model.maximo,
                new string[] {},
                Model.salida, Model.IDCampo)
            @Html.ValidationMessageFor(modelItem => Model.Nombre)
        }

这是我帮手的签名

@helper crearContenedorTipo(int tipoDato, int? min, int? max, string[] valor, bool salida, int id)

1 个答案:

答案 0 :(得分:2)

在我阅读你的代码时,if仅用于防止空字符串或空字符串。除了Model.valores参数之外,块的其余部分是相同的。因此,这相当于您的代码:

@crearContenedorTipo(
                Model.IDTipodato,
                Model.minimo, Model.maximo,
                (Model.valores ?? String.Empty).Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries),
                Model.salida, Model.IDCampo)
            @Html.ValidationMessageFor(modelItem => Model.Nombre)

这是因为StringSplitOptions.RemoveEmptyEntries - 当字符串为空时,不返回任何项目。