2012-04-24 12 views
0

私は実行時にidにnullエラーが発生します。ここに私のすべての部分があります。ここで"パラメータ辞書には、null不可能な型のパラメータにはnullが含まれています"?

ここ

私のDALは、ProjectDB

public static List<Product> IsOrganic(int lotid) 
    { 
     using (var db = new ProductDB()) 
     { //Selects from database in SQL what we need 
      //IsDamaged is Organic, and bool for true/false for food 
      DbCommand cmd = db.GetSqlStringCommand("SELECT * FROM PRODUCTS WHERE ORGANIC = 1"); 


      return FillList(db.ExecuteDataSet(cmd)); 
     } 
    } 

は、ここに私のコントローラは、ここで、

public ActionResult Organic(int id)//Store/Organic 
    { 
     ProductManager mgr = new ProductManager(); 

     var list = mgr.IsOrganic(id); 

     return View(list); 
    } 

もある私のグローバル

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 
私のマネージャー

public List<Product> IsOrganic(int lotid) 
    { 


     return ProductDB.IsOrganic(lotid); 


    } 

です3210

+0

パラメータを渡すことができない場合は、このエラーが発生します。 –

+0

エラーは、問題の内容を正確に示しています。あなたのリクエストとルート設定はどのように見えますか? – asawyer

+2

このエラーは、フレームワークがコントローラメソッドを呼び出そうとしたときに上位レベルで発生します。実行は、あなたが示したコードには達しません。 – GSerg

答えて

3

、オプションのパラメータ

public ActionResult Organic(
     [System.ComponentModel.DefaultValue(0)] int id) //Store/Organic 
{ 
    ProductManager mgr = new ProductManager(); 

    var list = mgr.IsOrganic(id); 

    return View(list); 
} 

ためのDefaultValue属性を使用

public ActionResult Organic(int id = 0)//Store/Organic 
{ 
    ProductManager mgr = new ProductManager(); 

    var list = mgr.IsOrganic(id); 

    return View(list); 
} 

C#3のみ場合は、C#4、オプションのパラメータの使用デフォルト値を使用している。しかし、あなたが呼んでいる理由は、私は思ったんだけど場合そのような有機的な方法は、それはパラメータなしです。

あなたはStoreControllerのオーガニックアクションが動作しているかどうかをテストしたい場合は、URLに次のように入力します。

http://localhost/Store/Organic/7

またはこの:

http://localhost/Store/Organic?id=7

あなたのためにカスタム名を使用した場合StoreControllerのオーガニックアクションのパラメータID、例えば、organicId:

public ActionResult Organic(int organicId = 0) //Store/Organic?organicId=7 
{ 
    ProductManager mgr = new ProductManager(); 

    var list = mgr.IsOrganic(id); 

    return View(list); 
} 

は、このURLは機能しません:実行時エラーを持っていませんが、organicId値が値を渡されません、そのように常に0

の値を持つことになりますhttp://localhost/Store/Organic/7

、これを代わりに使用する必要があります:http://localhost/Store/Organic?organicId=7

ところで、ランタイムエラーはどこから来ますか?リンクをクリックすると?そのリンクをクリックし、ブラウザのステータスバーを見てみてください。あなたのURLは、http://localhost/Store/Organic/7またはhttp://localhost/Store/Organic?id=7に準拠している必要があります。

それは、そのように見てこれにあなたのActionLinkのを変更しない場合は、次の

@Html.ActionLink("Store", "Organic", new {id = 7})

たり、プレーンなHTMLを使用している場合:

<a href="Store/Organic/7"> 

またはこの:

<a href="Store/Organic?id=7"> 
+0

返事をありがとう。私はいくつかのことをして、私はそのidエラーを修正したかもしれません。私はこれを実行するとこのエラーが発生する/ store/organic C:\ Users \ MYNAE.UNI \ Dropbox \ WebDev2 \ Project(最終)\ NewProj3 \ NewProj3 \ App_Dataファイルの自動ネームデータベースを添付しようとしました。 \ StoreDB.sdfが失敗しました。同じ名前のデータベースが存在するか、指定されたファイルを開くことができないか、UNC共有上にあります。これは私のAbstractDatabase.csにあります – PolarisUser

+0

データベースファイルはその場所にありますが、私はチェックした= \ – PolarisUser

+0

"返事ありがとうございました。私はいくつかのことをしました。ツ問題は[再現可能](http://blog.sobbayi.com/a-run-down-of-the-best-computer-programmer-jokes/)ではないので、もう一度修正する方法を知っているはずです彼/彼女は同じ種類のエラーに遭遇したとき?あなたは別の質問でDBの問題を投稿することができます、それはまたhttp:// stackoverflowの両方の姉妹サイトhttp://serverfault.com/またはhttp://dba.stackexchange.com/で解決される可能性が高い可能性があります。 com –

関連する問題