List传到View后,用什么读取值出来?

finer 2017-10-22 07:03:15
代码如下:

public ActionResult Index(string searchDJString, string searchOEString)
{
var result = (from tb in db.ut_DENSOAlternator
where tb.DJNumber == searchDJString && tb.OENumber == searchOEString
select new { DJNumber = tb.DJNumber, OENumber = tb.OENumber }).ToList();
ViewData["MaterialList"] = result;
return View();
}



在view里怎么读取?
代码如下:

@foreach (var item in ViewData["MaterialList"])
{
<div>@Html.DisplayFor(modelItem => item[0])</div><div>@Html.Raw(Html.Encode(item[1]).Replace("\n", "<br />"))</div><br />
}
...全文
411 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
webdiyer 2017-11-23
  • 打赏
  • 举报
回复
引用 7 楼 finer 的回复:
[quote=引用 6 楼 webdiyer 的回复:] 楼主的问题在于你传递的对象是一个dynamic类型,有view中就要设置 @model List<dynamic>,action中传递时可以直接用Model,return View(result);显示时: @foreach(var do in Model){ <tr><td>@do.DJNumber</td></tr> } 将业务对象做为dynamic类型在前后端传递很容易出错而且没有智能感知提示很不方便,所以建议用强类型的自定义对象来传递更好一些
------------------------------------------------- 谢谢你的关注与回复。 对于MVC刚刚学,不是很明白。 像我代码中不是有用ToList()转换成List了吗,怎么还是dynamic类型呢,帮忙指导一下,谢谢![/quote] List是一个集合,你集合中的类型是dynamic啊
finer 2017-11-18
  • 打赏
  • 举报
回复
引用 6 楼 webdiyer 的回复:
楼主的问题在于你传递的对象是一个dynamic类型,有view中就要设置 @model List<dynamic>,action中传递时可以直接用Model,return View(result);显示时: @foreach(var do in Model){ <tr><td>@do.DJNumber</td></tr> } 将业务对象做为dynamic类型在前后端传递很容易出错而且没有智能感知提示很不方便,所以建议用强类型的自定义对象来传递更好一些
------------------------------------------------- 谢谢你的关注与回复。 对于MVC刚刚学,不是很明白。 像我代码中不是有用ToList()转换成List了吗,怎么还是dynamic类型呢,帮忙指导一下,谢谢!
webdiyer 2017-10-29
  • 打赏
  • 举报
回复
楼主的问题在于你传递的对象是一个dynamic类型,有view中就要设置 @model List<dynamic>,action中传递时可以直接用Model,return View(result);显示时: @foreach(var do in Model){ <tr><td>@do.DJNumber</td></tr> } 将业务对象做为dynamic类型在前后端传递很容易出错而且没有智能感知提示很不方便,所以建议用强类型的自定义对象来传递更好一些
然后没有然 2017-10-26
  • 打赏
  • 举报
回复
既然返回的是集合,为什么不考虑用绑定呢?datagrid方法
finer 2017-10-25
  • 打赏
  • 举报
回复
引用 3 楼 BrucesLong 的回复:
在views中使用ViewData值时须转换为对应的类型。 @foreach ( var stakerholder in ViewData["stackholder"] as Dictionary<string, string> ) { } ------------- views遍历ViewBag可如下所示: foreach(var item in ViewBag.MaterialList) 楼主foreachViewData则是错误的写法。
发生了 System.NullReferenceException HResult=0x80004003 Message=未将对象引用设置到对象的实例。 Source=App_Web_index.cshtml.9728d1fc.uc0qwumu StackTrace: 在 ASP._Page_Views_Test_Index_cshtml.Execute() 在 D:\webserver\aspMVC\WebAppTest3\WebAppTest3\Views\Test\Index.cshtml 中: 第 13 行 .....
BrucesLong 2017-10-24
  • 打赏
  • 举报
回复
在views中使用ViewData值时须转换为对应的类型。 @foreach ( var stakerholder in ViewData["stackholder"] as Dictionary<string, string> ) { } ------------- views遍历ViewBag可如下所示: foreach(var item in ViewBag.MaterialList) 楼主foreachViewData则是错误的写法。
丰云 2017-10-23
  • 打赏
  • 举报
回复
上面有错误,重新发一下:

//两种做法:
//1. 用ViewBag传递,页面直接使用
//action:
ViewBag.MaterialList = result;
//cshtml:
for(var item in ViewBag.MaterialList)
{
          //do something
}

//2.直接参数传递,页面Model调用
//action:
            return View(result);
//cshtml:
for(var item in Model)
{
          //do something
}
丰云 2017-10-23
  • 打赏
  • 举报
回复
两种做法: 1. 用ViewBag传递,页面直接使用 action: ViewBag.MaterialList = result; cshtml: for(var item in ViewBag.MaterialList) { //do something } 2.直接参数传递,页面Model调用 action: return Viewresult(); cshtml: for(var item in Model) { //do something }

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧