当I'时,模型为空;我试图在JavaScript中使用它
我的应用程序架构是ASP.NETMVC 我正在尝试使用实体框架ORM从mssql服务器传递一些数据 这是我的操作代码。当I'时,模型为空;我试图在JavaScript中使用它,javascript,c#,.net,asp.net-mvc,entity-framework,Javascript,C#,.net,Asp.net Mvc,Entity Framework,我的应用程序架构是ASP.NETMVC 我正在尝试使用实体框架ORM从mssql服务器传递一些数据 这是我的操作代码。 public ActionResult Create() { List<object> myModel = new List<object>(); var places = db.Places.Where(p => p.UserId == User.Identity.GetUserId());
public ActionResult Create()
{
List<object> myModel = new List<object>();
var places = db.Places.Where(p => p.UserId == User.Identity.GetUserId());
myModel.Add(places);
myModel.Add(new Place());
ViewBag.UserId = new SelectList(db.AspNetUsers, "Id", "UserName");
return View(myModel);
}
public ActionResult Create()
{
List myModel=new List();
var places=db.places.Where(p=>p.UserId==User.Identity.GetUserId());
myModel.Add(位置);
myModel.Add(newplace());
ViewBag.UserId=新选择列表(db.AspNetUsers,“Id”,“UserName”);
返回视图(myModel);
}
我眼中的代码
@model IEnumerable<object>
@{
List<WhereWeDoIt.Models.Place> places = Model.ToList()[0] as List<WhereWeDoIt.Models.Place>;
WhereWeDoIt.Models.Place place = Model.ToList()[1] as WhereWeDoIt.Models.Place;
ViewBag.Title = "Create";
}
...
<script type="text/javascript">
//Users data
var json = @Html.Raw(Json.Encode(places));
console.log("Places test " + json);
</script>
...
@model IEnumerable
@{
List places=Model.ToList()[0]作为列表;
WhereWeDoIt.Models.Place Place=Model.ToList()[1]作为WhereWeDoIt.Models.Place;
ViewBag.Title=“创建”;
}
...
//用户数据
var json=@Html.Raw(json.Encode(places));
log(“Places test”+json);
...
控制台将输出“null”
我做错了什么?我测试您的代码。按如下方式编辑视图:
List<WhereWeDoIt.Models.Place> places = Model.ToList() as List<WhereWeDoIt.Models.Place>;
List places=Model.ToList()作为列表;
Model.ToList()[0]不是列表。我测试您的代码。按如下方式编辑视图:
List<WhereWeDoIt.Models.Place> places = Model.ToList() as List<WhereWeDoIt.Models.Place>;
List places=Model.ToList()作为列表;
Model.ToList()[0]不是列表
一旦Html.Raw将获取字符串并将其直接放入Html中,请重试
将@Html.Raw置于单引号之间,如:
var json = '@Html.Raw(Json.Encode(places))';
问候,
我上面提供的解决方案将json设置为json字符串(而不是对象),因此无法工作,对此表示抱歉。下面是解决方案(在我的机器上模拟和测试)
嗯,我们这里有些事情
我在代码方面取得了成功:
@model IEnumerable<object>
@{
var places = Model.ToList()[0];
HypothesisWebMVC.Models.Place place = Model.ToList()[1] as HypothesisWebMVC.Models.Place;
ViewBag.Title = "Create";
}
<script type="text/javascript">
//Users data
var json = @Html.Raw(Json.Encode(places));
console.log("Places test " + json);
</script>
@model IEnumerable
@{
var places=Model.ToList()[0];
假设webmvc.Models.Place=Model.ToList()[1]作为假设webmvc.Models.Place;
ViewBag.Title=“创建”;
}
//用户数据
var json=@Html.Raw(json.Encode(places));
log(“Places test”+json);
此代码将json变量设置为对象(控制器中设置的位置列表)
我不知道你的目标是什么,但我在上面发布的代码会起作用
一些考虑:
在操作中,当您执行以下操作时:
List<object> myModel = new List<object>();
var places = db.Places.Where(p => p.UserId == User.Identity.GetUserId());
myModel.Add(places);
myModel.Add(new Place());
List myModel=new List();
var places=db.places.Where(p=>p.UserId==User.Identity.GetUserId());
myModel.Add(位置);
myModel.Add(newplace());
您正在创建一个myModel,它在第一个位置和位置列表(或IQueryable)中有一个位置,在第二个位置有一个位置(不是列表),因此无法将整个模型转换为列表
您可以使用:
List<WhereWeDoIt.Models.Place> places = Model.ToList()[0] as List<WhereWeDoIt.Models.Place>;
List places=Model.ToList()[0]作为列表;
通过,在添加到模型时,在插入之前执行.ToList()
考虑使用视图模型(为视图创建的特定对象)
希望我能帮上忙
问候,
一旦Html.Raw将获取字符串并将其直接放入Html中,请重试
将@Html.Raw置于单引号之间,如:
var json = '@Html.Raw(Json.Encode(places))';
问候,
我上面提供的解决方案将json设置为json字符串(而不是对象),因此无法工作,对此表示抱歉。下面是解决方案(在我的机器上模拟和测试)
嗯,我们这里有些事情
我在代码方面取得了成功:
@model IEnumerable<object>
@{
var places = Model.ToList()[0];
HypothesisWebMVC.Models.Place place = Model.ToList()[1] as HypothesisWebMVC.Models.Place;
ViewBag.Title = "Create";
}
<script type="text/javascript">
//Users data
var json = @Html.Raw(Json.Encode(places));
console.log("Places test " + json);
</script>
@model IEnumerable
@{
var places=Model.ToList()[0];
假设webmvc.Models.Place=Model.ToList()[1]作为假设webmvc.Models.Place;
ViewBag.Title=“创建”;
}
//用户数据
var json=@Html.Raw(json.Encode(places));
log(“Places test”+json);
此代码将json变量设置为对象(控制器中设置的位置列表)
我不知道你的目标是什么,但我在上面发布的代码会起作用
一些考虑:
在操作中,当您执行以下操作时:
List<object> myModel = new List<object>();
var places = db.Places.Where(p => p.UserId == User.Identity.GetUserId());
myModel.Add(places);
myModel.Add(new Place());
List myModel=new List();
var places=db.places.Where(p=>p.UserId==User.Identity.GetUserId());
myModel.Add(位置);
myModel.Add(newplace());
您正在创建一个myModel,它在第一个位置和位置列表(或IQueryable)中有一个位置,在第二个位置有一个位置(不是列表),因此无法将整个模型转换为列表
您可以使用:
List<WhereWeDoIt.Models.Place> places = Model.ToList()[0] as List<WhereWeDoIt.Models.Place>;
List places=Model.ToList()[0]作为列表;
通过,在添加到模型时,在插入之前执行.ToList()
考虑使用视图模型(为视图创建的特定对象)
希望我能帮上忙
请注意,尽可能使用viewmodel!尽可能使用viewmodel!{“序列化“System.Data.Entity.DynamicProxies.Place”类型的对象时检测到循环引用。\u 084A987E8F6FBE574A22E813FE314F2894AF728F244BDD6582AF50929FF1161D.”我已更改了解决方案(编辑的答案),请查看。关于。{“序列化'System.Data.Entity.DynamicProxies.Place_084A987E8F6FBE574A22E813FE314F2894AF728F244BDD6582AF50929FF1161D'类型的对象时检测到循环引用”。}我已更改解决方案(编辑的答案),请查看。Alives.CS0039:无法通过引用转换、装箱转换、取消装箱转换、换行转换或空类型转换将类型“System.Collections.Generic.List”转换为“System.Collections.Generic.List”。请使用此代码并将其转换为列表。console.log(“Places test”+json)显示Places json.CS0039:无法通过引用转换、装箱转换、取消装箱转换、包装转换或空类型转换将类型“System.Collections.Generic.List”转换为“System.Collections.Generic.List”。我使用此代码并转换为列表。log(“Places test”+json)显示Places json。