2017-07-14 33 views
0

我最近开始深入研究MVC Razor网络编程,并且我几乎坚持了一些基础知识。Razor中的全局/本地范围MVC

我有这样的代码:

@ { 
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 [email protected]"; 
    var selectedData = db.Query(baseQuery, backQuery); 
    grid = new WebGrid(source: selectedData); 
} 

grid.GetHtml(); } 

那么这背后的想法是让用户表单将从数据库得到的东西,并显示它回使用的WebForms用户的WebGrid功能。

但是,我在上面的代码中存在问题,因为grid.GetHtml()生成了作用域问题的错误。这是Razor语法范围确定的一些具体问题,因为这应该在正常的C#中工作,或者是我错过的其他东西。

谢谢。

+0

如果你有范围问题,那么放置代码:grid.GetHtml(); @ {}之外,因为该块用于编写c#代码。谢谢 –

回答

1

无法评论,因为我还没有声望。

这里有几件事情:

  1. 添加一些异常细节。
  2. 我们无法看到您正在使用的db.Query库以及您正在使用的WebGrid版本。
  3. 如果“partId”实际上是空的,那么就是在空引用上调用方法。
  4. 当使用MVC模式时,尽量避免在视图中使用这种逻辑。至少把它放在控制器(或者存储库,如果你喜欢这种事情)并将结果提供给模型。为模型提供默认数据。
+0

你似乎在这里点。它可能是返回NULL引用,然后“显示它”而没有任何数据。我会尝试添加一些默认值。 –

+0

这有助于你解决你的问题吗? –

+0

DaveG,我解决了这个问题。你帮助我认识到价值已经空无一人,并且导致了一个错误。因为这个原因,我不得不重新格式化整个概念,最后我在IF子句中做了这个。你可以在这里查看当前的代码:https://dotnetfiddle.net/VVEDJJ –