我有一個工作的創建頁面,它使用JavasScript來拉動各種數據字符串,並在前端顯示它們。MVC 4編輯控制器拋出NullReferenceException當使用.getJSON調用
當我試圖在同一視圖的編輯頁面中實現類似的代碼時,我遇到了一個「NullReferenceException」 - 對象引用未設置爲對象的實例。
下面是在「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爲空(見我的回答) –