Asp.net 在viewbag中传递数据
我想从表Asp.net 在viewbag中传递数据,asp.net,asp.net-mvc-3,Asp.net,Asp.net Mvc 3,我想从表db.instantservices 我不能这样做。我使用的是EF code,在浏览器上我可以看到此详细信息页面,但不能看到viewbag中的信息。提前谢谢 Classes-: public class InstantService { public int InstantServiceID { get; set; } public string ServiceName { get; set; } public string InstantUserName
db.instantservices
我不能这样做。我使用的是EF code
,在浏览器上我可以看到此详细信息页面,但不能看到viewbag
中的信息。提前谢谢
Classes-:
public class InstantService
{
public int InstantServiceID { get; set; }
public string ServiceName { get; set; }
public string InstantUserName { get; set; }
public string Title { get; set; }``
public string Description { get; set; }
public int Hours { get; set; }
public int InstantID { get; set; }
public Instants CurrentInstant { get; set; }
public virtual ICollection<Review> Reviews { get; set; }
}
public class Review
{
public int ReviewID { get; set; }
public InstantService Service { get; set; }
public int InstantServiceID { get; set; }
public string MyReview{ get; set; }
}
查看代码-:
@{
ViewBag.Title = "Details";
}
<fieldset>
<legend>Review</legend>
<div class="display-label">Service</div>
<div class="display-field">
@Html.DisplayFor(model => model.Service.Title)
</div>
<div class="display-label">MyReview</div>
<div class="display-field">
@Html.DisplayFor(model => model.MyReview)
</div>
</fieldset>
<p>
@Html.ActionLink("Edit", "Edit", new { id=Model.ReviewID }) |
@Html.ActionLink("Back to List", "Index")
</p>
<div>
Total Hours required were -:
<div>
@ViewBag.ServiceHours
</div>
</div>
@{
ViewBag.Title=“详细信息”;
}
复习
服务
@DisplayFor(model=>model.Service.Title)
我的评论
@DisplayFor(model=>model.MyReview)
@ActionLink(“编辑”,“编辑”,新的{id=Model.ReviewID})|
@ActionLink(“返回列表”、“索引”)
所需总小时数为-:
@ViewBag.ServiceHours
此方法(Linq选择)返回IEnumerable:
当您将其直接转储到Razor视图中时,它将使用ToString进行渲染,这是您不希望看到的。如果希望从该数据库调用中得到一个结果,则可以使用FirstOrDefault获取实际值:
ViewBag.ServiceHours = db.InstantServiceDB
.Where(model => model.ForeignKey == id)
.Select(model => model.Hours)
.FirstOrDefault();
目前尚不清楚您希望如何准确显示
ViewBag.ServiceHours
数据。由于赋值是整数的集合,因此可以在视图中以如下方式显示:
<div>
@(String.Join(", ", ((IEnumerable<int>) ViewBag.ServiceHours).Select(x => x.ToString())))
</div>
@(String.Join(“,”,((IEnumerable)ViewBag.ServiceHours)。选择(x=>x.ToString())
这将显示所有以逗号分隔的值。您可以根据需要调整格式。尝试
ViewBag.servicehurs=db.InstantServiceDB.Select(model=>model.Hours.ToArray()
首先感谢您的帮助。我想检索该InstantService的小时数,该服务的评论就在那里。@user1609429如果不了解更多关于db.InstantServiceDB的信息,我很难准确地说出来。关键是要确保表达式的右侧返回一个字符串。类似于ViewBag.ServiceHours=db.InstantServiceDB.Select(model=>model.Hours)。其中(“Foriegnkey\u of_InstantServices\u Table”=PrimaryKeyID\u of_Reviews\u Table,);那么这些相同的值应该是什么呢?还有,如何在这里写WHERE子句。谢谢YOu@user1609429请看我的最新答案。只需将“ForeignKey”替换为您模型中的外键列的名称。非常感谢。这正是我要查找的内容。!!:)。另外,请告诉我这是一种在现实世界应用程序中实现的好方法吗?首先,感谢您的帮助。这两个数据表由外键关联,您可以在代码中看到。您给出的代码非常有用,但每次都显示第一行,这不是故意的。我想要查看即时服务的小时数,您能告诉我吗。?
ViewBag.ServiceHours = db.InstantServiceDB
.Where(model => model.ForeignKey == id)
.Select(model => model.Hours)
.FirstOrDefault();
<div>
@(String.Join(", ", ((IEnumerable<int>) ViewBag.ServiceHours).Select(x => x.ToString())))
</div>