razor/WebMatrix变量范围

razor/WebMatrix变量范围,razor,webmatrix-2,Razor,Webmatrix 2,我的网页上有这个 @{ if(!IsPost){ var db = Database.Open("MyDatabase"); var catList= db.Query("select * from category"); } else{ var db = Database.Open("MyDatabase"); var query = "insert into product (productkey

我的网页上有这个

@{
    if(!IsPost){
        var db = Database.Open("MyDatabase");
        var catList= db.Query("select * from category");    
    }
    else{
        var db = Database.Open("MyDatabase");
        var query = "insert into product (productkey,productname,categorykey) values(@0,@1,@2)";
        ....more code....
    }
}
在我的html中,我有以下内容

<select id="categorySelect" name="Name">
@foreach(var cat in catList){
    <option value=cat.CategoryKey>@cat.CategoryName</option> 
}
</select>

@foreach(catList中的var cat){
@类别名称
}
问题是,当我第一次导航到此页面时,我收到CS0103异常,表示上下文中不存在名称
catList

我正在从另一个页面的链接加载此页面。我的代码出了什么问题?

您在if(){…}语句中定义了catList,所以您得到了这个错误,请在if之前预定义它

dynamic catList=null;
if(!IsPost){
var db = Database.Open("MyDatabase");
catList= db.Query("select * from category");
...  

嘿,谢谢Aleksey,只需向那些面临同样问题的人澄清一下。catList变量应使用类型dynamic而不是IEnumerable声明,以避免泛型类型异常:dynamic catList=null