使用编辑器模板获取对象引用错误复选框/单选按钮

时间:2012-02-19 17:49:21

标签: asp.net-mvc-3

我收到一个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);
        }

感谢任何建议。

1 个答案:

答案 0 :(得分:0)

经过对此问题的大量研究后,我确定序列化导致了这个奇怪的错误。虽然序列化运行良好,但我选择了一个jQuery解决方案,它可以更好地使用此代码。

经验教训:jQuery并不是那么糟糕。 :)