【问题标题】:how to transfer data from controller to view如何将数据从控制器传输到视图
【发布时间】:2014-04-17 12:41:50
【问题描述】:

HomeController.cs

[HttpPost]
public ActionResult Index(int searchtext)
{
    var data = (from pm in db.ProductMasters
                join shi in db.SuppliersHotelsInfoes
                    on pm.ProductID equals shi.LocHotelID
                where shi.SearchID == searchtext
                select new {pm.ProductId,pm.Image,shi.HotelName,shi.HotelPrice}).ToList().Take(10);
    ViewBag.Data = data;
        return View();
}

将数据传输到视图

<% try { %>
<tr><td>
    <% foreach(var item in ViewBag.Data){ %>
    <img alt="" src="<%= item. %>" />
        </td><%} %>            <% foreach(var item in ViewBag.Data) { %>
    <td><%: Html.DisplayFor(modelItem => "")%></td>
    <td><%: Html.DisplayFor(modelItem => "")%> </td>
    <td><%: Html.DisplayFor(modelItem => "")%></td>
</tr>
<%} }%>
<%catch(Exception ex){ }%>

这里,如何获取“var item”中的值

【问题讨论】:

  • 为什么不用模型?创建一个新的 ViewModel 并传递它。
  • 我有一个实体模型

标签: asp.net linq asp.net-mvc-4


【解决方案1】:

你真的应该使用 ViewModel,我不记得我上次使用 ViewBag 是什么时候了

我也会在这里使用 Razor,它的语法要简洁得多。如果您只是呈现数据,则无需使用DisplayFor

@foreach(var item in ViewBag.Data){ 
 <tr>
   <td><img alt="" src="@item.Image" /><td>
   <td>@item.ProductId</td>
   <td>@item.HotelName</td>
   <td>@item.HotelPrice</td>
  </tr>
}

【讨论】:

  • 这样使用时出现异常
  • 例外是什么,究竟是什么?
  • "'object' 不包含 'Image' 的定义"
  • 有什么办法可以取@item["image"]
  • 在这个循环中放一个断点,看看item有什么属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-01
  • 2013-09-28
相关资源
最近更新 更多