2017-02-13 3 views
1

私はbool型として最後のパラメータを持つカスタムhtmlヘルパーを持っています。私のコードは、データベースにデータがあるときに正常に動作します。しかし、データなしで、それは次のエラースロー:次に辞書に渡されるモデル項目は 'System.Boolean'型ですが、この辞書にはMyProject.checkboxstate型のモデル項目が必要です

System.NullReferenceException: Object reference not set to an instance of an object.

を、私は可能な「NULL値」をチェックし、成功せず、明らかに、ビューに「偽」として値を送信しようとしました。

public ActionResult Index() 
{    
    bool? defaultVal = true; 

    var dbValue = context.checkboxstates.Where(c => c.Name == "Country").FirstOrDefault(); 
    if (dbValue == null) 
    { 
     return View(defaultVal); 
    }    
    return View(dbValue); 
}  

マイビュー:

ここ
@model MyProject.CheckboxState 
@Html.MyCustomHtmlHelper("text", "AnotherText", "changeState", Model.state) 

、Model.stateは、データベースから返された値に基づいてチェックボックス「をチェックすると、」「確認」または「未チェック」の責任があります。私はデータベースの最初のアプローチを使用しているので、モデルはありません。

私は明示的にコントローラからブール値を渡すためにしようとすると、私はこのエラーメッセージを取得:場合Model

The model item passed into the dictionary is of type 'System.Boolean', but this dictionary requires a model item of type 'MyProject.checkboxstate'.

+1

"SOLVED"と記入していただきありがとうございますが、正しい回答は回答の1つを受け入れることです。これにより、「未回答」ビューから質問が自動的に削除されます。それはまた、おそらく最も重要なことに、あなたがそこに着くのを手伝った人に信用を与えます。 –

+0

[回答を選択]タブが表示されませんでした。それを指摘してくれてありがとう。 –

答えて

0

は、カスタムHTMLヘルパーにデフォルト値を渡してみてくださいnullです:

@Html.MyCustomHtmlHelper("text", "AnotherText", "changeState", Model!=null?Model.state:false) 

モデルにCheckboxStateタイプのオブジェクトが必要であるため、ビューにブール値パラメータを渡すことはできません。

+0

それは素晴らしかった!ありがとうございました。 –

+0

あなたは大丈夫です@rkun;) – octavioccl

+1

@rkun:この回答を受け入れることを忘れないでください。回答を受け入れるには、希望の答えの左側にある目盛りをクリックして緑色に変えます。これは、スタックオーバーフローで役に立つ人に感謝します。 – halfer

関連する問題