Прежде всего, этот код действительно вызывает исключение в этой строке
dictViewModel.dictInViewModel.dpdnDict.Add("M", "Male");
, потому что dictViewModel.dictInViewModel
возвращает new dictionary()
, а dictViewModel.dictInViewModel.dpdnDict
равно null
, поскольку dpdnDict
нигде не заданов коде.Если вы хотите, чтобы этот код работал, измените ваши классы
public class dictionaryviewmodel
{
public class dictionaryviewmodel
{
//this getter will create dictionary instance only once
//and will always return the same instance with previously added values
//also it instantiates dpdnDict object
public dictionary dictInViewModel { get; } = new dictionary()
{
dpdnDict = new Dictionary<string, string>()
};
}
}
И я не думаю, что вы передаете какие-либо данные в контроллер по запросу, поэтому я бы также обновил контроллер
public ActionResult Index()
{
dictionaryviewmodel dictViewModel = new dictionaryviewmodel();
dictViewModel.dictInViewModel.dpdnDict.Add("M", "Male");
dictViewModel.dictInViewModel.dpdnDict.Add("F", "Female");
return View(dictViewModel);
}