2012-02-19 9 views
-1

System.NullReferenceExceptionが発生しました:使用しているウィザードで "back"を押したときにオブジェクト参照がオブジェクトのインスタンスに設定されていません(また、私がブラウザに戻ったときに「再確認の確認」ページが表示されます)。これは、次のコードが原因である(私のウィザードまたはブラウザの戻るボタンに「戻る」打つこのシステムを使用せず、通常は正常に動作します):Checkbox/radiobuttonsのEditorTemplateを使用したオブジェクト参照エラーの発生

// Loop through the items and make sure they are Selected if the value has been posted 
    if(Model != null) 
    { 
     foreach (var item in selectorModel.Items) 
     { 
      if (supportsMany) 
      { 
       var modelStateValue = GetModelStateValue<string[]>(Html, fieldName) ?? ((IEnumerable)Model).OfType<object>().Select(m => m.ToString()); 
       item.Selected = modelStateValue.Contains(item.Value); 
      } 
      else 
      { 
       var modelStateValue = GetModelStateValue<string>(Html, fieldName); 
       item.Selected = modelStateValue.Equals(item.Value, StringComparison.OrdinalIgnoreCase); 
      } 
     } 
    } 

エラーがitem.Selected = modelStateValue.Equals(item.Value, StringComparison.OrdinalIgnoreCase);

ウィザードで発生しますウィザードの「戻る」ボタンのコードは、コントローラで次のようになります。

public ActionResult EMailQuoteConfirm(string backButton, string nextButton) 
     { 
      if (backButton != null) 
       return RedirectToAction("EMailQuoteBasicDetails"); 
      else if (nextButton != null) 
       return RedirectToAction("EMailQuoteSubmitted"); 
      else 
       return View("EMailQuote/Confirm", myData); 
     } 

アドバイスをいただければ幸いです。

答えて

0

この問題について多くの調査をしたところ、この奇妙なエラーを引き起こしていたのはシリアライゼーションだと判断しました。シリアライゼーションはうまくいきましたが、このコードでうまく動作するjQueryソリューションを選択しました。

教訓:jQueryはそれほど悪くありません。 :)

関連する問題