2012-02-15 21 views
0

有没有更好的方式来做到这一点,这里是我助手的签名处理,如果在Razor视图

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

最好的方法是将if移出视图并移入控制器。视图不应包含逻辑。 – driis 2012-02-15 19:44:54

+0

如果知道,该视图不应该包含逻辑,但我无法避免它在这种情况下 – Jorge 2012-02-15 19:45:56

+0

为什么不让控制器在传递模型之前执行拆分字符串? – driis 2012-02-15 19:47:01

回答

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的 - 当字符串为空,则返回没有项目。