C# 查看数据在MVC 2中无法正常工作

C# 查看数据在MVC 2中无法正常工作,c#,asp.net,asp.net-mvc,visual-studio,asp-classic,C#,Asp.net,Asp.net Mvc,Visual Studio,Asp Classic,嗯,我是mvc的新手,我一直是这里的问题之一。我想使用ViewData将数据从操作方法传递到我的视图。我正在visual studio 2008中使用Asp.net MVC 2.0。我知道如何从操作方法使用视图数据&在视图中使用它 Here is what i have written in my action method : - public ActionResult Index() {

嗯,我是mvc的新手,我一直是这里的问题之一。我想使用ViewData将数据从操作方法传递到我的视图。我正在visual studio 2008中使用Asp.net MVC 2.0。我知道如何从操作方法使用视图数据&在视图中使用它

Here is what i have written in my action method : - 

             public ActionResult Index()
                    {
                        NorthWindEntities db = new NorthWindEntities();
                        var data = (from id in db.Orders
                                    join ordid in db.Order_Details on id.OrderID equals                  ordid.OrderID
                                    select new
                                    {
                                        orderid = id.OrderID,
                                        productid = ordid.ProductID,
                                        discount = ordid.Discount
                                    }
                                      );
                        ViewData["Data"] = data;
                        return View();
                    }
以下是视图中的代码:-

        <%foreach (var item in (IEnumerable)ViewData["Data"] )
          {
              Response.Write(item.orderId);

          } %>

它给出了这样一个错误

“对象”不包含“orderId”的定义,也不包含扩展名 接受类型为“object”的第一个参数的方法“orderId”可以是 找到(是否缺少using指令或程序集引用?)


提前感谢

您需要采用一种视图模型,如下所示:-

public class ViewModelClass
{
     public int OrderId{ get; set; }
     public int ProductId{ get; set; }
     public int Discount{ get; set; }
}
在控制器中:-

  public ActionResult Index()
                    {
                        NorthWindEntities db = new NorthWindEntities();
                        var data = (from id in db.Orders
                                    join ordid in db.Order_Details on id.OrderID equals                  ordid.OrderID
                                    select new ViewModelClass
                                    {
                                        orderid = id.OrderID,
                                        productid = ordid.ProductID,
                                        discount = ordid.Discount
                                    }
                                      );
                        ViewData["Data"] = data;
                        return View();
                    }
鉴于:-

 <%foreach (var item in (ViewData["Data"] as List<ViewModelClass>))
          {
              Response.Write(item.orderId);

          } %>

尝试以下操作(使用viewmodel是一种最佳实践…创建一个类OrderViewModel,然后用您选择的新OrderViewModel填充该类,如下所示

namespace MyApp.ViewModels
{
    public class OrderViewModel
    {
        public int OrderId { get; set; }

        public int ProductId { get; set; }

        public int Discount { get; set; }
    }
}

public ActionResult Index()
{
    NorthWindEntities db = new NorthWindEntities();

    List<OrderViewModel> data = (from id in db.Orders
                                join ordid in db.Order_Details on id.OrderID equals ordid.OrderID
                                select new OrderViewModel()
                                {
                                    OrderId = id.OrderID,
                                    ProductId = ordid.ProductID,
                                    Discount = ordid.Discount
                                }).ToList();

    ViewData["Data"] = data;
    return View();
名称空间MyApp.ViewModels
{
公共类OrderViewModel
{
公共int-OrderId{get;set;}
public int ProductId{get;set;}
公共整数折扣{get;set;}
}
}
公共行动结果索引()
{
NorthWindEntities db=新的NorthWindEntities();
列表数据=(以db.Orders为单位从id)
在db.Order中加入ordid\u id.OrderID等于OrderID.OrderID的详细信息
选择新的OrderViewModel()
{
OrderId=id.OrderId,
ProductId=ORDD.ProductId,
折扣=原价折扣
}).ToList();
ViewData[“数据”]=数据;
返回视图();
然后在您的查看页面中

@using MyApp.ViewModels

<%foreach (var item in (List<OrderViewModel>)ViewData["Data"] )
{
    Response.Write(item.orderId);
}%>
使用MyApp.ViewModels
通过输出ViewData[“Data”].GetType().FullName检查ViewData[“products”]是否有数据,找出ViewData[“Data”]的真正含义。调试控制器。系统。集合。通用。列表
1[[f_uAnonymousType1
3[[System.Int32,mscorlib,版本=2.0.0,区域性=中立,PublicKeyToken=b77a5c561934e089],[System.Int32,mscorlib,版本=2.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089],[System.Single,mscorlib,版本=2.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089],[MVCapApplication1,版本=1.0.0.0,区域性=中性,PublicKeyToken=null]]我真的很感激你的回答,但是现在它给了object null error object null where@NitinSingh?它是说viewdata为null,但是在调试过程中,我可以在action方法中看到viewdata对象中的数据。你是否处于与特定action方法@NitinSingh附带的相同视图中?尝试忘记viewdata并返回ViewModel类…在控制器操作返回视图(数据)中,然后在视图中,例如@model ViewModelClass,然后在foreach中使用(模型中的var项)