我收到一个System.NullReferenceException:当我在我正在使用的向导上“返回”时,对象引用未设置为对象的实例(另外,如果我刚刚点击,我将收到“确认重新提交”页面回到浏览器上)。这是由于以下代码(通常,不使用此系统在我的向导上点击“返回”或浏览器上的后退按钮工作正常):
// 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 :(得分:0)
经过对此问题的大量研究后,我确定序列化导致了这个奇怪的错误。虽然序列化运行良好,但我选择了一个jQuery解决方案,它可以更好地使用此代码。
经验教训:jQuery并不是那么糟糕。 :)