微软JScript运行时错误:'data.EmployeeDetails.EmployeeId'为空或不是object` [英] Microsoft JScript runtime error: 'data.EmployeeDetails.EmployeeId' is null or not an object`
问题描述
HI我被困在获取数据,我需要显示在剑道UI GRID,起初我能看到按钮和文本框和网格以及但是当我输入文本框中的值,然后preSS按钮我需要显示在剑道UI网格,输入的数值...
当我运行谷歌浏览器这个应用程序这是给空格,后进入的值,然后preSS提交按钮,但是当我在IE8上运行这个它是在起步阶段本身给错误这样的.. ..
在行238未处理的异常,在功能code柱37
0x800a138f - 微软JScript运行时错误:'data.EmployeeDetails.EmployeeId'为空或不是对象
这是我的模型
公共类TextBoxGrid
{
公共字符串EnteredValue {搞定;组; }
公开名单< EmployeeDetails>雇员;
}
公共类ParentViewModel
{
公共EmployeeDetails EmployeeDetails {搞定;组; }
公共TextBoxGrid TextBoxGrid {搞定;组; }
}
公共类EmployeeDetails
{
公共字符串雇员{搞定;组; }
公共字符串经理ID {搞定;组; }
}
这是我的控制器
公共类EnterValuesGridController:控制器
{
私人静态列表< EmployeeDetails> empdtls;
公众的ActionResult指数(ParentViewModel模型)
{
VAR视图模型=新ParentViewModel
{
TextBoxGrid =新TextBoxGrid {员工= getEmployee的()。了ToList()}
};
返回视图(视图模型);
}
[HttpPost]
公众的ActionResult PostValues(TextBoxGrid模型)
{
TempData的[enteringValue] = model.EnteredValue;
VAR视图模型=新ParentViewModel
{
TextBoxGrid =新TextBoxGrid {员工= getEmployee的()。了ToList()}
};
// ParentViewModel P =新ParentViewModel();
// TextBoxGrid T =新TextBoxGrid();
//t.EnteredValue =一个;
// TempData的[A1] = t.EnteredValue;
//t.employees = getEmployee的()了ToList()。
//p.TextBoxGrid = T;
//返回视图(指数,P);
返回视图(指数,视图模型);
}
公共IEnumerable的< EmployeeDetails> getEmployee的()
{
字符串enteredValueId =(字符串)的TempData [enteringValue];
串经理ID =M+ enteredValueId;
empdtls =新的List< EmployeeDetails>();
EmployeeDetails EM1 =新EmployeeDetails();
em1.EmployeeId = enteredValueId;
em1.ManagerId =经理ID;
empdtls.Add(EM1);
返回empdtls.AsEnumerable();
}
公众的ActionResult Orders_Read([DataSourceRequest] DataSourceRequest要求)
{
返回JSON(GetOrders()ToDataSourceResult(要求));
}
私人的IEnumerable< EmployeeDetails> GetOrders()
{
返回getEmployee的()AsEnumerable()。
}
}
这是我的看法。
@model KendoPratapSampleMVCApp.Models.ParentViewModel
@ {
ViewBag.Title =指数;
}
@using(Html.BeginForm(PostValues,EnterValuesGrid,FormMethod.Post))
{
@ Html.TextBoxFor(M = GT; m.TextBoxGrid.EnteredValue)
<输入类型=提交名称=Submitbutton1VALUE =Submit1/>
@(Html.Kendo()网格和LT; KendoPratapSampleMVCApp.Models.ParentViewModel>()
。名称(网格)
.Columns(列=> {
columns.Bound(S => s.EmployeeDetails.EmployeeId).Filterable(假).WIDTH(100);
columns.Bound(S => s.EmployeeDetails.ManagerId).Filterable(假).WIDTH(100);
})
.Filterable()
.HtmlAttributes(新{风格=高度:430px;})
.DataSource(数据源=>数据源
阿贾克斯()
.PageSize(20)
.Read(读=> read.Action(Orders_Read,EnterValuesGrid))
)
)
}
我不知道我在哪里做错了,你会暂建议在这一个任何想法..
非常感谢...,做我需要做的UI GRID我试图改变后的值的方法,任何改变......但因此未工作对我来说...
更新:
改TempData的查看背包
[HttpPost]
公众的ActionResult PostValues(ParentViewModel模型)
{
ViewBag.item = model.TextBoxGrid.EnteredValue; VAR视图模型=新ParentViewModel
{
TextBoxGrid =新TextBoxGrid {员工= getEmployee的()。了ToList()} }; // ParentViewModel P =新ParentViewModel();
// TextBoxGrid T =新TextBoxGrid();
//t.EnteredValue =一个;
// TempData的[A1] = t.EnteredValue;
//t.employees = getEmployee的()了ToList()。
//p.TextBoxGrid = T;
//返回视图(指数,P);
返回视图(指数,视图模型);
} 公共IEnumerable的< EmployeeDetails> getEmployee的()
{
字符串enteredValueId =(字符串)ViewBag.item;
串经理ID =M+ enteredValueId;
empdtls =新的List< EmployeeDetails>();
EmployeeDetails EM1 =新EmployeeDetails();
em1.EmployeeId = enteredValueId;
em1.ManagerId =经理ID;
empdtls.Add(EM1);
返回empdtls;
}
嗨普拉塔普我刚刚更新code,
型号
公共类TextBoxGrid
{
公共字符串EnteredValue {搞定;组; }
公开名单< EmployeeDetails>雇员;
}
公共类ParentViewModel
{
公共EmployeeDetails EmployeeDetails {搞定;组; }
公共TextBoxGrid TextBoxGrid {搞定;组; }
}
公共类EmployeeDetails
{
公共字符串EnteredValue {搞定;组; }
公共字符串雇员{搞定;组; }
公共字符串经理ID {搞定;组; }
}
查看
@model TwoModelInSinglePageModel.EmployeeDetails
@ {
ViewBag.Title =指数;
}
<脚本SRC =〜/脚本/ jQuery的-1.8.1.min.js类型=文/ JavaScript的>< / SCRIPT>
<脚本SRC =〜/脚本/ jQuery的-UI-1.8.20.min.js类型=文/ JavaScript的>< / SCRIPT>
<脚本的src =@ Url.Content(〜/脚本/ kendo.all.min.js)TYPE =文/ JavaScript的>< / SCRIPT>
<脚本SRC =〜/脚本/ kendo.web.min.js类型=文/ JavaScript的>< / SCRIPT>
<脚本SRC =〜/脚本/ kendo.aspnetmvc.min.js类型=文/ JavaScript的>< / SCRIPT>@using(Html.BeginForm(PostValues,测试,FormMethod.Post))
{
@ Html.TextBoxFor(M = GT; m.EnteredValue)
<输入类型=提交名称=Submitbutton1VALUE =Submit1/>
@(Html.Kendo()网格和LT; TwoModelInSinglePageModel.EmployeeDetails>()
。名称(网格)
.Columns(列=>
{
columns.Bound(S => s.EmployeeId);
columns.Bound(S => s.ManagerId);
})
.Filterable()
.HtmlAttributes(新{风格=高度:430px;})
.DataSource(数据源=>数据源
阿贾克斯()
.PageSize(20)
.Read(读=> read.Action(Orders_Read,测试))
)
)
}
控制器
私有静态列表< EmployeeDetails> empdtls;
公众的ActionResult PostValues()
{
返回查看();
}[HttpPost]
公众的ActionResult PostValues(EmployeeDetails模型)
{
ViewBag.item = model.EnteredValue; ParentViewModel的ViewModels =新ParentViewModel
{
TextBoxGrid =新TextBoxGrid {员工= getEmployee的()。了ToList()} }; ParentViewModel视图模型=新ParentViewModel();
EmployeeDetails EM1 =新EmployeeDetails();
的for(int i = 0; I< viewmodels.TextBoxGrid.employees.Count();我++)
{ em1.EmployeeId = viewmodels.TextBoxGrid.employees [I] .EmployeeId;
em1.ManagerId = viewmodels.TextBoxGrid.employees [I] .ManagerId;
viewmodel.EmployeeDetails = EM1;
}
会话[EM1] = EM1;
返回视图(PostValues,EM1);
}公开名单< EmployeeDetails> getEmployee的()
{
字符串enteredValueId =(字符串)ViewBag.item;
串经理ID =M+ enteredValueId;
empdtls =新的List< EmployeeDetails>();
EmployeeDetails EM1 =新EmployeeDetails();
em1.EmployeeId = enteredValueId;
em1.ManagerId =经理ID;
如果(会话[EM1]!= NULL)
{
EM1 =会话[EM1]为EmployeeDetails; empdtls.Add(EM1);
会话[EM1] = NULL;
}
其他
{
empdtls.Add(EM1);
}
返回empdtls;
}公众的ActionResult Orders_Read([DataSourceRequest] DataSourceRequest要求,EmployeeDetails模型)
{
返回JSON(getEmployee的()ToDataSourceResult(要求));
}
HI I am stuck in getting data that i need to display in kendo UI GRID , Initially I am able to see the button and textbox and grid as well but when i enter the value in textbox and then press the button i need to show that entered values in kendo UI GRID ...
When I run this application in google chrome it was giving empty grid,after enters the value and then press the submit button but when I run this one in IE8 it was giving error like this at starting stage itself....
Unhandled exception at line 238, column 37 in Function code
0x800a138f - Microsoft JScript runtime error: 'data.EmployeeDetails.EmployeeId' is null or not an object
and this is my model
public class TextBoxGrid
{
public string EnteredValue { get; set; }
public List<EmployeeDetails> employees;
}
public class ParentViewModel
{
public EmployeeDetails EmployeeDetails { get; set; }
public TextBoxGrid TextBoxGrid { get; set; }
}
public class EmployeeDetails
{
public string EmployeeId { get; set; }
public string ManagerId { get; set; }
}
this is my controller
public class EnterValuesGridController : Controller
{
private static List<EmployeeDetails> empdtls;
public ActionResult Index( ParentViewModel model)
{
var viewmodel = new ParentViewModel
{
TextBoxGrid = new TextBoxGrid { employees = GetEmployee().ToList() }
};
return View(viewmodel);
}
[HttpPost]
public ActionResult PostValues(TextBoxGrid model)
{
TempData["enteringValue"] = model.EnteredValue;
var viewmodel = new ParentViewModel
{
TextBoxGrid = new TextBoxGrid { employees = GetEmployee().ToList() }
};
//ParentViewModel p = new ParentViewModel();
//TextBoxGrid t = new TextBoxGrid();
//t.EnteredValue = "a";
//TempData["a1"] = t.EnteredValue;
//t.employees = GetEmployee().ToList();
//p.TextBoxGrid = t;
//return View("Index", p);
return View("Index", viewmodel);
}
public IEnumerable<EmployeeDetails> GetEmployee()
{
string enteredValueId =(string) TempData["enteringValue"];
string managerId = "M" +enteredValueId;
empdtls = new List<EmployeeDetails>();
EmployeeDetails em1 = new EmployeeDetails();
em1.EmployeeId = enteredValueId;
em1.ManagerId = managerId;
empdtls.Add(em1);
return empdtls.AsEnumerable();
}
public ActionResult Orders_Read([DataSourceRequest]DataSourceRequest request)
{
return Json(GetOrders().ToDataSourceResult(request));
}
private IEnumerable<EmployeeDetails> GetOrders()
{
return GetEmployee().AsEnumerable();
}
}
and this is my view
@model KendoPratapSampleMVCApp.Models.ParentViewModel
@{
ViewBag.Title = "Index";
}
@using (Html.BeginForm("PostValues", "EnterValuesGrid", FormMethod.Post))
{
@Html.TextBoxFor(m=>m.TextBoxGrid.EnteredValue)
<input type="submit" name="Submitbutton1" value="Submit1" />
@(Html.Kendo().Grid<KendoPratapSampleMVCApp.Models.ParentViewModel>()
.Name("grid")
.Columns(columns => {
columns.Bound(s=>s.EmployeeDetails.EmployeeId).Filterable(false).Width(100);
columns.Bound(s => s.EmployeeDetails.ManagerId).Filterable(false).Width(100);
})
.Filterable()
.HtmlAttributes(new { style = "height:430px;" })
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Read(read => read.Action("Orders_Read", "EnterValuesGrid"))
)
)
}
I am not sure where I am doing wrong, Would you pls suggest any ideas on this one .. Many thanks...., Do i need to do any changes in UI GRID I have tried changing the post values method ...but it didnot worked for me ...
UPDATE : changed tempData to view Bag...
[HttpPost]
public ActionResult PostValues(ParentViewModel model)
{
ViewBag.item = model.TextBoxGrid.EnteredValue;
var viewmodel = new ParentViewModel
{
TextBoxGrid = new TextBoxGrid { employees = GetEmployee().ToList() }
};
//ParentViewModel p = new ParentViewModel();
//TextBoxGrid t = new TextBoxGrid();
//t.EnteredValue = "a";
//TempData["a1"] = t.EnteredValue;
//t.employees = GetEmployee().ToList();
//p.TextBoxGrid = t;
//return View("Index", p);
return View("Index", viewmodel);
}
public IEnumerable<EmployeeDetails> GetEmployee()
{
string enteredValueId = (string)ViewBag.item;
string managerId = "M" +enteredValueId;
empdtls = new List<EmployeeDetails>();
EmployeeDetails em1 = new EmployeeDetails();
em1.EmployeeId = enteredValueId;
em1.ManagerId = managerId;
empdtls.Add(em1);
return empdtls;
}
Hi pratap i just update your code,
Model
public class TextBoxGrid
{
public string EnteredValue { get; set; }
public List<EmployeeDetails> employees;
}
public class ParentViewModel
{
public EmployeeDetails EmployeeDetails { get; set; }
public TextBoxGrid TextBoxGrid { get; set; }
}
public class EmployeeDetails
{
public string EnteredValue { get; set; }
public string EmployeeId { get; set; }
public string ManagerId { get; set; }
}
View
@model TwoModelInSinglePageModel.EmployeeDetails
@{
ViewBag.Title = "Index";
}
<script src="~/Script/Jquery-1.8.1.min.js" type="text/javascript"></script>
<script src="~/Script/jquery-ui-1.8.20.min.js" type="text/javascript"></script>
<script src="@Url.Content("~/Script/kendo.all.min.js")" type="text/javascript"></script>
<script src="~/Script/kendo.web.min.js" type="text/javascript"></script>
<script src="~/Script/kendo.aspnetmvc.min.js" type="text/javascript"></script>
@using (Html.BeginForm("PostValues", "Test", FormMethod.Post))
{
@Html.TextBoxFor(m => m.EnteredValue)
<input type="submit" name="Submitbutton1" value="Submit1" />
@(Html.Kendo().Grid<TwoModelInSinglePageModel.EmployeeDetails>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(s => s.EmployeeId);
columns.Bound(s => s.ManagerId);
})
.Filterable()
.HtmlAttributes(new { style = "height:430px;" })
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Read(read => read.Action("Orders_Read", "Test"))
)
)
}
Controller
private static List<EmployeeDetails> empdtls;
public ActionResult PostValues()
{
return View();
}
[HttpPost]
public ActionResult PostValues(EmployeeDetails model)
{
ViewBag.item = model.EnteredValue;
ParentViewModel viewmodels = new ParentViewModel
{
TextBoxGrid = new TextBoxGrid { employees = GetEmployee().ToList() }
};
ParentViewModel viewmodel = new ParentViewModel();
EmployeeDetails em1 = new EmployeeDetails();
for (int i = 0; i < viewmodels.TextBoxGrid.employees.Count(); i++)
{
em1.EmployeeId = viewmodels.TextBoxGrid.employees[i].EmployeeId;
em1.ManagerId = viewmodels.TextBoxGrid.employees[i].ManagerId;
viewmodel.EmployeeDetails = em1;
}
Session["EM1"] = em1;
return View("PostValues", em1);
}
public List<EmployeeDetails> GetEmployee()
{
string enteredValueId = (string)ViewBag.item;
string managerId = "M" + enteredValueId;
empdtls = new List<EmployeeDetails>();
EmployeeDetails em1 = new EmployeeDetails();
em1.EmployeeId = enteredValueId;
em1.ManagerId = managerId;
if (Session["EM1"] != null)
{
em1 = Session["EM1"] as EmployeeDetails;
empdtls.Add(em1);
Session["EM1"] = null;
}
else
{
empdtls.Add(em1);
}
return empdtls;
}
public ActionResult Orders_Read([DataSourceRequest]DataSourceRequest request, EmployeeDetails model)
{
return Json(GetEmployee().ToDataSourceResult(request));
}
这篇关于微软JScript运行时错误:'data.EmployeeDetails.EmployeeId'为空或不是object`的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!