2017-07-14 50 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 –