我从theee表获取结果使用linq到sql但是我无法使用视图中的值,我怎么能这样做,因为我是mvc的新手
这是我的控制器代码:
public ActionResult Grid()
{
ViewBag.Message = "Your Grid page.";
bc_limsEntities objbc_limsDBContext = new bc_limsEntities();
var result = from b in objbc_limsDBContext.dc_tpatient_bookingm
join d in objbc_limsDBContext.dc_tpatient_bookingd on b.bookingid equals d.bookingid
join t in objbc_limsDBContext.dc_tp_test on d.testid equals t.TestId
where b.bookingid == 41239 && d.ProcessID == 0006 && t.SubdepartmentId == 16
select new {b.bookingid,
d.bookingdid,
d.testid,
t.Test_Name,
t.procedureid,
t.ClinicalUse,
t.AutomatedText};
ViewBag.Result = result.ToList();
return View(result);
}
我在视野中这样做:
@foreach(var item in ViewBag.Result)
{
<h1>@item</h1>
}
答案 0 :(得分:4)
我通过这种方式解决了自己:
public class ResultSet
{
public long bookingid { get; set; }
public long bookingdid { get; set; }
public long testid { get; set; }
public string Test_Name { get; set; }
public long procedureid { get; set; }
public string ClinicalUse { get; set; }
public string AutomatedText { get; set; }
}
并在Controller中:
bc_limsEntities objbc_limsDBContext = new bc_limsEntities();
var result = from b in objbc_limsDBContext.dc_tpatient_bookingm
join d in objbc_limsDBContext.dc_tpatient_bookingd on b.bookingid equals d.bookingid
join t in objbc_limsDBContext.dc_tp_test on d.testid equals t.TestId
where b.bookingid == 41239 && d.ProcessID == 0006 && t.SubdepartmentId == 16
select new {b.bookingid,
d.bookingdid,
d.testid,
t.Test_Name,
t.procedureid,
t.ClinicalUse,
t.AutomatedText};
List<ResultSet> resultList = new List<ResultSet>();
foreach (var temp in result)
{
ResultSet objResultSet = new ResultSet();
objResultSet.bookingid = temp.bookingid;
objResultSet.bookingdid = temp.bookingdid;
objResultSet.testid = temp.testid;
objResultSet.Test_Name = temp.Test_Name;
objResultSet.procedureid = long.Parse(temp.procedureid.ToString());
objResultSet.ClinicalUse = temp.ClinicalUse;
objResultSet.AutomatedText = temp.AutomatedText;
resultList.Add(objResultSet);
}
ViewBag.Result = resultList;
return View(resultList);
并在视图中这样:
@foreach(var item in Model)
{
<tr>
<td class="t_center"><input type="checkbox" id="c14" name="cc" /><label for="c14"><span></span></label></td>
<td>@item.bookingid</td>
<td>@item.bookingdid</td>
<td>@item.testid</td>
<td>@item.Test_Name</td>
<td>@item.procedureid</td>
<td>@item.ClinicalUse</td>
<td>@item.AutomatedText</td>
</tr>
}
答案 1 :(得分:3)
请勿使用View包,请使用View Model。在这种情况下,您已经将results
作为视图模型传递,因此您需要在视图页面的顶部声明模型,如下所示:
@model List<Item>
(或任何类型的对象results
)
然后你可以像这样使用它:
@foreach(var item in Mode)
{
<h1>@item.Property</h1>
}
通常情况下,您将拥有一个专用的View Model类,其中包含许多属性,其中一个属于您的results
列表,如果您喜欢冒险,请尝试使用它!
编辑:因为您正在动态创建自定义对象而不知道类型,所以您应该创建一个包含所需字段的类(例如Item
),然后从三个表中填充该类,然后使用它。
答案 2 :(得分:-1)
尝试类似的事情:
@foreach(var item in ViewBag.Result)
{
<h1>@item.bookingid</h1>
}
当然,如果你想坚持使用viewbag,但是否则musefan建议使用视图模型更清洁,你应该做什么。