C# 查看数据在MVC 2中无法正常工作
嗯,我是mvc的新手,我一直是这里的问题之一。我想使用ViewData将数据从操作方法传递到我的视图。我正在visual studio 2008中使用Asp.net MVC 2.0。我知道如何从操作方法使用视图数据&在视图中使用它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() {
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项)