Asp.net mvc Razor MVC中的全局/局部范围界定

Asp.net mvc Razor MVC中的全局/局部范围界定,asp.net-mvc,razor,Asp.net Mvc,Razor,我最近开始钻研MVC Razor web编程,我对一些基础知识非常着迷 我有以下代码: @ { using WebMatrix.Data; WebGrid grid; if (!Request.QueryString["partID"].IsEmpty()) { var backQuery = Request.QueryString["partID"]; var db = Database.Open("SQLServerConnectionString"); var

我最近开始钻研MVC Razor web编程,我对一些基础知识非常着迷

我有以下代码:

@ { 
using WebMatrix.Data;

WebGrid grid;
if (!Request.QueryString["partID"].IsEmpty())
{
    var backQuery = Request.QueryString["partID"];
    var db = Database.Open("SQLServerConnectionString");
    var baseQuery = "SELECT * FROM Person.Person WHERE FirstName =@0";
    var selectedData = db.Query(baseQuery, backQuery);
    grid = new WebGrid(source: selectedData);
}

grid.GetHtml(); }
因此,这背后的想法是拥有一个用户表单,该表单将从数据库中获取一些信息,并使用WebForms WebGrid功能将其显示给用户

但是,我在上面的代码中遇到了这个问题,因为grid.GetHtml生成了一个范围问题错误。这是Razor语法作用域的特定问题,因为它应该在普通C语言中工作,或者是我缺少的其他东西


谢谢。

我不能发表评论,因为我还没有这样做的名声

这里有几件事:

添加一些异常详细信息。 我们看不到您正在为db.Query使用的库,也看不到您正在使用的WebGrid版本。 如果partId实际上是空的,那么您正在对空引用调用一个方法。 当使用MVC模式时,尽量避免在视图中执行这样的逻辑。如果您愿意,至少将其放入控制器或存储库中,并将结果提供给模型。向模型提供默认数据。
你似乎说到点子上了。它可能是返回空引用,然后在没有任何数据的情况下显示它。我将尝试添加一些默认值。DaveG,我解决了这个问题。您帮助我意识到该值返回为空,这导致了一个错误。正因为如此,我不得不重新格式化整个概念,并最终在IF子句中进行了修改。您可以在这里检查当前代码:如果您有范围问题,那么将代码放在grid.GetHtml;在@{}之外,因为该块用于编写c代码。谢谢