2017-10-15 37 views
1

我正在嘗試使用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。謝謝(你是否也請張貼你的評論作爲答案來標記它解決了?)。 –

回答

2

您在聲明中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」])'也在工作。我會編輯我的答案 –