我的应用程序架构是ASP.Net MVC 我试图使用实体框架ORM从mssql服务器传递一些数据。
这是我行动的代码。
<html>
<head>
<script type = "text/javascript">
function fruit (name, colour, image){
this.name = name;
this.colour = colour;
this.image = image;
}
var apple= new fruit("Apple", "Red", "http://www.lifemartini.com/wp-content/uploads/2012/04/Apple-Fruit1.jpg");
var banana = new fruit("Banana", "Yellow", "https://www.healthbytez.com/wp-content/uploads/2015/11/bana.jpg");
</script>
</head>
<body>
<button onclick= "myfunc()" id="button" name="button">button</button>
<section class="box special features">
<div class="features-row">
<section>
<h3 id="h31"> </h3>
<p id="p1"> </p>
<p id="p2"> </p>
</section>
<section>
<h3 id="h32"> </h3>
<p id="p3"> </p>
<p id="p4"> </p>
</section>
</div>
</section>
</body>
<script type = "text/javascript">
function myfunc(){
document.getElementById("h31").innerHTML = apple.name;
document.getElementById("p1").innerHTML = apple.colour;
document.getElementById("p2").innerHTML = apple.image;
document.getElementById("h32").innerHTML = banana.name;
document.getElementById("p3").innerHTML = banana.colour;
document.getElementById("p4").innerHTML = banana.image;
}
</script>
</html>
我视图中的代码
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);
}
控制台将输出&#34; null&#34; 我做错了什么?
答案 0 :(得分:0)
我测试你的代码。编辑这样的视图:
List<WhereWeDoIt.Models.Place> places = Model.ToList() as List<WhereWeDoIt.Models.Place>;
Model.ToList()[0]不是列表。
答案 1 :(得分: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>
此代码将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());
您正在创建一个myModel,它将位于Place的第一个位置和列表(或IQueryable)中,并且在第二个位置创建一个单独的位置(不是列表),因此您无法将整个模型转换为列表
您可以使用:
List<WhereWeDoIt.Models.Place> places = Model.ToList()[0] as List<WhereWeDoIt.Models.Place>;
当添加到模型时,在插入之前执行.ToList()。
考虑使用视图模型(专门为视图创建的对象)
希望我帮助过。
此致