2012-03-07 125 views
0

我已创建类函数返回的DataTable如何在.cshtml页面MVC3中创建Class对象?

namespace Office365 
{ 
    public class Office365 
    { 
     public DataTable GetQAData() 
      { 
       return Datatable; 
      } 
    } 
} 

此功能使用Controlller和渲染使用ViewBag.Content这样

数据在.cshtml

 @Html.Raw(ViewBag.QAData) 

在控制器代码:

using Office365; 
    Office365 con = new Office365(); 

    StringBuilder sb = new StringBuilder(); 

     DataTable dt = con.GetQAData(); 
     int i = 1; 
     foreach (DataRow dr in dt.Rows) 
     { 
      sb.append("<div></div>") 
     } 

     ViewBag.QAData = sb.ToString(); 

但这是可能的调用.cshtml上的类对象,并将我的DataTable呈现为Div?我的意思是直接在.cshtml中编写代码

回答

2

我会用你的行集合创建一个ViewModel。 然后从页面开始,我将循环它并创建html。 像这样

public calss DataViewModel 
{ 
    public IList<MyRow> Rows {get;set;} 
} 

从控制器

var model = new DataViewModel() 
    model.Rows = new List<MyRow>(); 
    DataTable dt = con.GetQAData(); 
    int i = 1; 
    foreach (DataRow dr in dt.Rows) 
    { 
     var row = new MyRow(); 
     /* populate the the MyRow class */ 
     Rows.Add(row); 
    } 

从视图

@foreach(var item in Model.Rows) 
    { 
     <div>@item.MyField</div> 
    } 

我希望你的想法

+0

要快速测试你code.come短的时间。 MVC中的新角色 – Jigs 2012-03-07 09:56:46

+0

。当我在剃刀页面使用模型。获得Object reference null错误。代码'@model WebNexpo.Controllers.DataViewModel @foreach(Model.Rows中的var item){@ item.ID};'这是错误的吗? – Jigs 2012-03-07 10:56:29

+0

它应该是正确的。也许你没有初始化控制器中的行?在那里发生的错误 – Iridio 2012-03-07 10:59:38