У меня есть рабочая страница создания, которая использует JavasScript для перемещения по различным строкам данных и отображения их на лицевой стороне.MVC 4 Edit Controller throwing NullReferenceException при использовании вызова .getJSON
Когда я попытался реализовать аналогичный код на странице редактирования того же представления, меня встречает «Исключение NullReferenceException» - Object Reference, не установленное для экземпляра объекта.
Ниже приведен метод Edit в «ProductController», ошибка выдается на IF заявление:
public ActionResult Edit(int id = 0)
{
using (ManagePromotion promLogic = new ManagePromotion(ref uow))
using (ManageDistributionRule druleLogic = new ManageDistributionRule(ref uow))
{
Product prd = ProductLogic.GetByAndInclude(x => x.ProductID == id, new List<string>() { "AddSamplePacks" }).FirstOrDefault();
ProductVM vm = new ProductVM(prd, (int)System.Web.HttpContext.Current.Session["CustomerID"]);
if (vm.Product.AddSamplePacks == null || promLogic.GetById(vm.Product.PromotionID).CustomerID != (int)System.Web.HttpContext.Current.Session["CustomerID"])
{
throw new HttpException(404, "");
}
return View(vm);
}
}
Ниже также является Javascript, что я добавлял в Редактировать страницу передний конец, если я удалить этот код страницы работает нормально без ошибок:
var input = "comm";
//
//alert("HIT");
$.getJSON('getCat', { term: input }, function (result) {
var ddl = $('#selectTypeCat');
alert(result);
//
var length = result.length;
ddl.empty();
$(document.createElement('option'))
.attr('value', 0)
.text("-- Please Select --")
.appendTo(ddl);
$(document.createElement('option'))
.attr('value', 100)
.text("All Distribution Rules")
.appendTo(ddl);
$(result).each(function (jack) {
//
$(document.createElement('option'))
.attr('value', result[jack])
.text(result[jack])
.appendTo(ddl);
});
});
метод «getCat» в контроллере продукта, который прекрасно работает хорошо с процессом создания, выглядит следующим образом:
public ActionResult getCat(string term)
{
int customerId = (int)System.Web.HttpContext.Current.Session["CustomerID"];
//
//string term = "small";
//
var getCat = (from ctype in TypeLogic.GetCustomerProdIndex(customerId, term).List
select new { ctype.TypeName, ctype.TypeCategoryID }).ToList();
List<String> returnList = new List<string>();
foreach (var item in getCat)
{
returnList.Add(item.TypeName.ToString());
}
returnList = returnList.Distinct().ToList();
return Json(returnList, JsonRequestBehavior.AllowGet);
}
Любая помощь будет принята с благодарностью, спасибо.
пожалуйста показать функцию «getCat» не в контроллере –
обновляется, благодаря – Cooper1810
первопричина вы пытаетесь получить значение в vm.Product.AddSamplePacks где vm.Product равно нулю (см мой ответ) –