Rozważmy prosty kontroler:sprawdzając, czy ViewBag ma właściwość lub nie, warunkowo wstrzyknąć 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);
}
Teraz, moim Create
widzenia, chcę sprawdzić ViewBag
obiektu, aby zobaczyć, czy to ma Error
własność lub nie. Jeśli ma właściwość błędu, muszę wstrzyknąć trochę kodu JavaScript na stronę, aby wyświetlić komunikat o błędzie dla mojego użytkownika.
I stworzył metodę rozszerzenia aby to sprawdzić:
public static bool Has (this object obj, string propertyName)
{
Type type = obj.GetType();
return type.GetProperty(propertyName) != null;
}
Następnie w widoku Create
pisałem ten wiersz kodu:
@if (ViewBag.Has("Error"))
{
// Injecting JavaScript here
}
Jednak uzyskać ten błąd:
Cannot perform runtime binding on a null reference
Każdy pomysł?
'ViewBag' jest zerowy? –
Który kod faktycznie generuje ten błąd? –
@JohnSaunders, jak widzisz ustawiłem 'ViewBag.Error' w moim kontrolerze? Jak może być pusty? –