当I'时,模型为空;我试图在JavaScript中使用它

当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());

我的应用程序架构是ASP.NETMVC 我正在尝试使用实体框架ORM从mssql服务器传递一些数据

这是我的操作代码。

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。