2sxc - 无法使用c#vars

问题描述:

我正在尝试使用2sxc视图来创建一些统计与linq。不过,我似乎无法调用任何c#var。这里有一个例子:2sxc - 无法使用c#vars

@{ 
    if (@Request.QueryString["ano"] == "" || @Request.QueryString["ano"] == null) { 
     <p>ano not set, using current year (@DateTime.Now.Year)</p> 
     var year = @DateTime.Now.Year; 
     } else { 
     <p>ano set (@Request.QueryString["ano"])</p> 
     var year = @Request.QueryString["ano"]; 
    } 

    var items = AsDynamic(App.Data["entity"]); 
    items = items.Where(p => Convert.ToDateTime(p.data_a).Year == year); 
} 

这导致

error CS0103: The name 'year' does not exist in the current context 

上午,我再次做一些非常愚蠢的?

+1

你'在内部范围内声明的变量year'。在if语句上面移动它的decalration –

+0

我不太明白它......它不应该是相同的吗? var x = 1并且if(1 = 1){var x = 1}?尽管如此,它的工作。添加int年= 0;在顶部并将请求修改为int。谢谢(你是否也请张贴你的评论作为答案来标记它解决了?)。 –

您在声明中if声明变量外引用它if
现在你可以重写这样你的代码:

@{ 
    int year = 0; 
    if (@Request.QueryString["ano"] == "" || @Request.QueryString["ano"] == null) { 
     <p>ano not set, using current year (@DateTime.Now.Year)</p> 
     year = @DateTime.Now.Year; // no "var" keyword here! 
     } else { 
     <p>ano set (@Request.QueryString["ano"])</p> 
     year = int.Parse(Request.QueryString["ano"]); 
    } 

    var items = AsDynamic(App.Data["entity"]); 
    items = items.Where(p => Convert.ToDateTime(p.data_a).Year == year); 
} 
+0

谢谢。只是一个小修复:年= Int32.Parse(@ Request.QueryString [“ano”]); –

+0

@JoãoGomes是的,你是一个权利。顺便说一句'int.Parse(Request.QueryString [“ano”])'也在工作。我会编辑我的答案 –