Рассмотрим простой контроллер:Проверка, если ViewBag имеет свойство или нет, условно инъекционные JavaScript
Porduct product = new Product(){
// Creating a product object;
};
try
{
productManager.SaveProduct(product);
return RedirectToAction("List");
}
catch (Exception ex)
{
ViewBag.ErrorMessage = ex.Message;
return View("Create", product);
}
Сейчас, на мой Create
зрения, я хочу, чтобы проверить ViewBag
объект, чтобы увидеть, если он имеет Error
собственности или нет. Если у него есть свойство error, мне нужно добавить некоторый JavaScript на страницу, чтобы показать сообщение об ошибке моему пользователю.
Я создал метод расширения, чтобы проверить это:
public static bool Has (this object obj, string propertyName)
{
Type type = obj.GetType();
return type.GetProperty(propertyName) != null;
}
Затем, в Create
зрения, я написал эту строку кода:
@if (ViewBag.Has("Error"))
{
// Injecting JavaScript here
}
Однако, я получаю эту ошибку:
Cannot perform runtime binding on a null reference
Есть идеи?
'ViewBag' является недействительным? –
Какой код действительно генерирует эту ошибку? –
@JohnSaunders, как вы видите, я установил 'ViewBag.Error' в моем контроллере? Как это может быть null? –