2017-07-14 11 views
0

最近、MVC Razor Webプログラミングを掘り下げ始めましたが、私はかなり基本的なことに固執しています。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(); } 

だから、この背後にある考え方は、DBから何かを取得し、Webフォームを使用して、それをユーザーに戻って表示するユーザーフォームが機能をWebGridを持つことです。

しかし、grid.GetHtml()でスコープの問題が発生するため、上記のコードで問題が発生しています。これはRazorの構文スコープに特有の問題ですか?これは通常のC#で動作するはずなので、それが欠けているものです。

ありがとうございました。

+0

スコープに問題がある場合は、そのコードを配置します。grid.GetHtml();そのブロックはC#コードの記述に使用されていたため、@ {}の外側にあります。ありがとう –

答えて

1

私はまだそのように評判がないのでコメントできません。

ここにいくつかのこと:

  1. は、いくつかの例外の詳細を追加します。
  2. db.Queryや使用しているWebGridのバージョンに使用しているライブラリは確認できません。
  3. "partId"が実際に空の場合は、null参照でメソッドを呼び出しています。
  4. MVCパターンを使用する場合は、ビューのようにロジックを実行しないようにしてください。少なくともコントローラー(またはそのようなものを好む場合はリポジトリ)に入れて、結果をモデルに渡します。モデルにデフォルトデータを提供します。
+0

ここにポイントがあるようです。おそらく、NULL参照を返してから、その中にデータを入れずに「表示」している可能性があります。私はそれにいくつかのデフォルト値を追加しようとします。 –

+0

これは問題の解決に役立ちましたか? –

+0

DaveG、私は問題を解決しました。あなたは値が空に戻っていることに気づき、エラーを引き起こしました。そのため、私は全体のコンセプトを再フォーマットしなければなりませんでした。そして、私はIF節の中でそれをやりました。現在のコードを確認することができます:https://dotnetfiddle.net/VVEDJJ –